我希望使用 Python3 和 BeautifulSoup 从给定网站提取所有表单。
下面是一个执行此操作的示例,但无法选取所有表单:
from urllib.request import urlopen
from bs4 import BeautifulSoup
url = 'https://www.qantas.com/au/en.html'
data = urlopen(url)
parser = BeautifulSoup(data, 'html.parser')
forms = parser.find_all('form')
for form in forms:
print(form)
print('\n\n')
如果您运行代码并访问 URL,您会注意到 Book a trip
解析器不会抓取表单。
上面的代码只选取了三种形式,而在 Chrome 中的 Developers tools > elements
页面显示 13 <form>
元素。但如果我查看页面源代码(Chrome 中的 Ctrl+U
),源代码仅显示 BeautifulSoup 抓取的三种表单。
如何抓取所有表单?
最佳答案
该网页似乎使用 JavaScript 来加载网页内容。尝试在浏览器中使用 javascript disabled 查看页面.
检查您的表格是否在那里。如果不是,请检查控制台中是否存在任何XHR请求来获取表单。如果没有,您应该考虑转到 selenium with phantomjs headless 浏览器或放弃抓取该网站!!
headless 浏览器将允许您获取动态创建的网页的内容并将该内容提供给 BeautifulSoup。
关于python - BeautifulSoup 不会从网页中提取所有表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43036235/