使用 br.submit() 时无法通过机械化获得正确的结果
Can't get proper results with mechanize when using br.submit()
我正在尝试提交一个表单,并在提交表单后获取它前往的页面的结果。我正在使用机械化。
1) 当我使用代码点击第一个按钮时,它得到了响应。但是当我阅读响应时,它显示的是同一页面的来源(表单所在的页面)。不是提交表单后浏览器重定向到的页面。
from mechanize import Browser
br = Browser()
br.open("http://link.net/form_page.php")
br.select_form(nr=0)
br.form['number'] = '0123456789'
response = br.submit(nr=0)
print response.read()
现在,当我执行此操作时,会显示同一页面的来源(即 form_page.php)。但是,它应该显示 "results.php" 的来源(这是我手动执行时浏览器指向的地方)
2) 页面中有多个提交按钮。我只点击第一个。但是当我尝试使用 nr=1 或 nr=2 单击其他提交按钮时,它显示此错误。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/mechanize /_mechanize.py", line 524, in select_form
raise FormNotFoundError("no form matching "+description)
mechanize._mechanize.FormNotFoundError: no form matching nr 1
你能帮帮我吗?
这看起来类似于 问题,提交在重定向之前调用一些 Javascript 来验证输入。可能值得查看页面的 HTML 并检查它在提交时做了什么。
尝试以下操作:
import mechanize
br = mechanize.Browser()
br.open("http://link.net/form_page.php")
br.select_form(nr=0)
br['number'] = '0123456789' ### try instead of 'br.form[]'
response = br.submit() ### no need to specify form again
text = response.read()
不要忘记 'br.set_handle_robots(False)'、'br.set_all_readonly(False)' 等...
确保您选择了正确的表格或确保网页上有您正在选择的表格。您可以通过以下代码进行检查:
for form in br.forms():
print form
并查看返回给您的结果。
我正在尝试提交一个表单,并在提交表单后获取它前往的页面的结果。我正在使用机械化。
1) 当我使用代码点击第一个按钮时,它得到了响应。但是当我阅读响应时,它显示的是同一页面的来源(表单所在的页面)。不是提交表单后浏览器重定向到的页面。
from mechanize import Browser
br = Browser()
br.open("http://link.net/form_page.php")
br.select_form(nr=0)
br.form['number'] = '0123456789'
response = br.submit(nr=0)
print response.read()
现在,当我执行此操作时,会显示同一页面的来源(即 form_page.php)。但是,它应该显示 "results.php" 的来源(这是我手动执行时浏览器指向的地方)
2) 页面中有多个提交按钮。我只点击第一个。但是当我尝试使用 nr=1 或 nr=2 单击其他提交按钮时,它显示此错误。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/mechanize /_mechanize.py", line 524, in select_form
raise FormNotFoundError("no form matching "+description)
mechanize._mechanize.FormNotFoundError: no form matching nr 1
你能帮帮我吗?
这看起来类似于
尝试以下操作:
import mechanize
br = mechanize.Browser()
br.open("http://link.net/form_page.php")
br.select_form(nr=0)
br['number'] = '0123456789' ### try instead of 'br.form[]'
response = br.submit() ### no need to specify form again
text = response.read()
不要忘记 'br.set_handle_robots(False)'、'br.set_all_readonly(False)' 等...
确保您选择了正确的表格或确保网页上有您正在选择的表格。您可以通过以下代码进行检查:
for form in br.forms():
print form
并查看返回给您的结果。