Python // 机械化 // 找不到表单

Posted

技术标签:

【中文标题】Python // 机械化 // 找不到表单【英文标题】:Python // Mechanize // Can't find form 【发布时间】:2015-09-13 18:59:00 【问题描述】:

我正在使用 Mechanize 查找并提交表单。代码如下:

url = "THIS_IS_A_LINK"
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders=[('User-agent','chrome')]
br.open(url)
htmltext = br.open(url).read()
print htmltext

br.select_form(name="genericsearch_param.fulltext")
br["q"] = "metal"
res = br.submit()
content = res.read()
with open("mechanize_results.html", "w") as f:
   f.write(content) 

HTML 如下所示:

<form method="get" action="/WHAT_SO_EVER" accept-charset="utf-8" class="clearfix" style="display: inline;"><input type="hidden" name="session.sessionid" value="sdfosdfosdf3482374892hsdfanw9023qjh"><input type="hidden" name="global_data.designmode" value="xf"><div class="clearfix">
                                <div class="left"><label for="genericsearch_param.fulltext">Searchterm</label><input type="text" class="text" id="genericsearch_param.fulltext" name="genericsearch_param.fulltext" value=""></div> <div class="right"><label for="genericsearch_param.part_id">Searcharea</label><select id="genericsearch_param.part_id" name="genericsearch_param.part_id">

我不想使用 Selenium,因为它需要打开和关闭大部分浏览器。为什么 Mechanize 找不到表单?

【问题讨论】:

【参考方案1】:

只需选择 p 上的第一个表单

br.select_form(nr=0)

你确定提交按钮工作吗?:

submit_response = br.submit(name='action')submit_response = br.submit(label='action')

您尝试选择的表单可能令人困惑。

【讨论】:

太棒了,很高兴你知道了 :)【参考方案2】:

非常感谢。是的,以上对于只有一张表格的网站是正确的。那么,当然,第一个也是唯一的。找到我使用的表格

br.select_form(nr=0)
   for f in br.forms():
print f

给我带来了标签。再次尝试学习在 *** 上的精彩体验!

【讨论】:

以上是关于Python // 机械化 // 找不到表单的主要内容,如果未能解决你的问题,请参考以下文章

Dell笔记本启动找不到硬盘?

Laravel 6:找不到类“表单”

Drupal表单找不到页面

电脑蓝屏找不到原因?

PHP表单找不到空字段

可编辑表单 ActiveRecord::RecordNotFound(找不到带有 'id'=undefined 的视频)