python - BeautifulSoup 不会从网页中提取所有表单

标签 python html forms web-scraping beautifulsoup

我希望使用 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/

相关文章:

python - Python 中的尝试/异常(exception) : appropriate for parsing dictionaries?

python - python如何在无限循环期间处理KeyboardInterrupt?

java - 我可以删除我的 Spring Framework webapp 响应数据中不必要的换行符/空格吗?

jquery - 使用 AJAX 提交多个表单

java - 在输入中插入数据并选择下拉选项后,提交按钮在 IE11 中使用 selenium 的表单中无效

python - 如何在 SQL 脚本中提取表名?

python - FTP 类的 mlsd 方法返回的大小单位

HtmlAgilityPack 基本如何获取标题和链接?

html - 验证服务 - 电子邮件消息验证失败

javascript - 使用 javascript 进行表单验证。仅接受文本区域中的文本