首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python请求选择表单

使用Python请求选择表单
EN

Stack Overflow用户
提问于 2012-05-08 21:58:12
回答 1查看 4.1K关注 0票数 3

我想使用一个python库来填写表单和处理重定向:

  1. “主页”页面有一个表单{'username':'user', 'password':'pass'}
  2. “重定向”页面给我带来了一个新的页面。
  3. “新”页有一个指向最后一页的链接。
  4. “最终”页面有一个表单{'Field 1':'Data 1', 'Field 2':'Data 2'}

我想进入“最后”一页并填写表格。我已经查看了每一篇文章,因此对于python-请求,请阅读API文档和整个用户指南。

我已经能够使用机械填写“主页”页面表格:

代码语言:javascript
复制
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()

此外--在禁用网页上的重定向之后--我已经能够使用机械来填写“新”页面表格:

代码语言:javascript
复制
# 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()

如果我不禁用重定向和页面重定向,会发生什么情况:我没有将其重定向到"new“页面,并且当我试图填写表单时,我会得到以下错误:

代码语言:javascript
复制
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请求非常简单,我想使用这个库,前提是我可以按照以下代码来做一些事情:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2013-03-09 16:10:55

我知道这是老生常谈,但我相信您从requests中寻找的答案(显然)不是get,而是post

来自:http://docs.python-requests.org/en/latest/user/quickstart/#more-complicated-post-requests

代码语言:javascript
复制
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text
{
  ...
  "form": {
    "key2": "value2",
    "key1": "value1"
  },
  ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10507169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档