【发布时间】:2017-08-19 13:26:46
【问题描述】:
我希望使用 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 抓取的三个表单。
如何抓取所有表单?
【问题讨论】:
-
不确定这里发生了什么,但是如果您转到该页面的“查看源代码”,它只会显示三个表单,这正是您所得到的。会不会是其他表单是在页面加载之后从服务器请求生成的?
标签: python html forms web-scraping beautifulsoup