Python // Mechanize //无法找到表单

时间:2015-06-26 18:17:34

标签: python html forms mechanize

我正在使用 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 ,因为它需要大部分浏览器打开和关闭。为什么机械化找不到表单?

2 个答案:

答案 0 :(得分:0)

只需选择p

上的第一个表单即可
br.select_form(nr=0)

你确定提交按钮有效吗?:

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

您可能会选择哪种形式,这可能会让您感到困惑。

答案 1 :(得分:0)

非常感谢你。是的,对于只有一个表单的网站,上述内容是正确的。然后,当然,第一个也是唯一的。找到我用过的表格

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

带给我标签。再次尝试在stackoverflow上学习经验!