从 BeautifulSoup 结果中获取表单“动作”
Posted
技术标签:
【中文标题】从 BeautifulSoup 结果中获取表单“动作”【英文标题】:Getting form "action" from BeautifulSoup result 【发布时间】:2014-06-21 04:27:00 【问题描述】:我正在为网站编写 Python 解析器以自动完成某些工作,但我不太喜欢 Py 的“re”模块(正则表达式)并且无法使其工作。
req = urllib2.Request(tl2)
req.add_unredirected_header('User-Agent', ua)
response = urllib2.urlopen(req)
try:
html = response.read()
except urllib2.URLError, e:
print "Error while reading data. Are you connected to the interwebz?!", e
soup = BeautifulSoup.BeautifulSoup(html)
form = soup.find('form', id='form_product_page')
pret = form.prettify()
print pret
结果:
<form id="form_product_page" name="form_1362737440" action="/download/791055/164084/" method="get">
<input id="nojssubmit" type="submit" value="Download" />
</form>
确实,代码已经完成,正是我需要的开始。现在,我想知道应该以哪种方式从“form”标签中提取“action”属性。这只是我需要的 BeautifulSoup 响应。
我尝试使用form = soup.find('form', id='form_product_page').parent.get('action')
,但结果为“无”。我要提取的是例如“/download/791055/164084/”。这在来自链接的每个 URL 上都不同。
变量(示例): tl2 = http://example.com ua = Mozilla 火狐 / 14.04
【问题讨论】:
【参考方案1】:您可以一步完成:
action = soup.find('form', id='form_product_page').get('action')
【讨论】:
哎呀,看来我得多阅读 BS 文档了。这正是我所需要的。谢谢!已接受答案。 在我的情况下,如果action
包含参数,这不起作用,即 action="https://site.tld/file?arg1=test"
, .get('action')
只会检索 https://site.tld/file
以上是关于从 BeautifulSoup 结果中获取表单“动作”的主要内容,如果未能解决你的问题,请参考以下文章
如何从 BeautifulSoup ( Python ) 中的表中获取第一个子表行
从 JSON 文件中删除重复条目 - BeautifulSoup
BeautifulSoup find_all 仅限于 50 个结果?