我想使用一个能够填写表格和处理重定向的python库:
- “主页”有一个表格
{'username':'user', 'password':'pass'}
- “重定向”页面将我带到一个新页面
- “新”页面有一个指向最终页面的链接
- “最终”页面有一个表格
{'Field 1':'Data 1', 'Field 2':'Data 2'}
我想进入“最终”页面并填写表格。我已经浏览了 SO 中关于python-requests的每一篇文章,阅读了 API 文档和整个用户指南。
我已经能够使用 mechanize 填写“主页”页面表格:
import mechanize
# Fill out Log In form
br = mechanize.Browser()
br.open('http://www.yourfavoritesite.com')
br.select_form(nr=0)
br['username'] = 'user'
br['password'] = 'pass'
br.submit()
此外——在网页上禁用重定向后——我已经能够使用机械化来填写“新”页面表单:
# Click link
br.find_link(text='Admin')
req = br.click_link(text='Admin')
br.open(req)
# Fill out Final form
br.select_form(nr=0)
br['Field 1'] = 'Data 1'
br['Field 2'] = 'Data 2'
br.submit()
如果我不禁用重定向并且页面重定向会发生什么我没有进入“新”页面并且当我尝试填写表单时出现以下错误:
File "<stdin>", line 1, in <module>
File "/usr/local/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 0
我听说 Python Requests 非常简单,我想使用这个库,假设我可以做一些事情:
import requests
# Fill out Log In form
data = {'username':'admin', 'password':'pass'}
r = requests.get('http://www.yourfavoritesite.com', allow_redirects=True)
r = requests.put(r.url, data=data)
# Follow redirect to "new" page
# Click link
# I haven't heard of this feature in requests
# Fill out Final form
data = {'Field 1':'Data 1', 'Field 2':'Data 2'}
r = requests.put(r.url, data=data)