Python urllib2自动填表和检索结果

tak*_*tak 9 python forms automation urllib urllib2

我希望能够在运行此脚本的计算机上查询站点以获取保修信息.如果需要,它应该能够填写表格(比如说HP的服务站点),然后就可以检索生成的网页.

我已经有了一些位来解析生成的html报告回来我只是遇到了需要做什么的麻烦才能做一个需要放在字段中然后能够检索的数据的POST结果页面.

jat*_*ism 16

如果你绝对需要使用urllib2,基本要点是:

import urllib
import urllib2
url = 'http://whatever.foo/form.html'
form_data = {'field1': 'value1', 'field2': 'value2'}
params = urllib.urlencode(form_data)
response = urllib2.urlopen(url, params)
data = response.read()
Run Code Online (Sandbox Code Playgroud)

如果您发送POST数据(第二个参数urlopen()),请求方法将自动设置为POST.

我建议你帮自己一个忙,并使用机械化,一个完整的urllib2替换,就像一个真正的浏览器.很多站点都使用隐藏字段,cookie和重定向,默认情况下urllib2都没有为你处理,而机械化则是这样.

看看用机械化在Python中模拟浏览器就是一个很好的例子.

  • 我还将投票给机械化.我已经多次使用它了.比起urllib和urllib2做复杂的事情真的很有用,也更容易. (2认同)

Pau*_*ite 0

我\xe2\x80\x99ve只做了一点点,但是:

\n\n
    \n
  1. 您\xe2\x80\x99已经获得了表单页面的HTML。提取name您需要填写的每个表单字段的属性。
  2. \n
  3. 创建一个字典,将每个表单字段的名称与您要提交的值进行映射。
  4. \n
  5. 用于urllib.urlencode将字典转换为帖子请求的正文。
  6. \n
  7. 将此编码数据作为第二个参数包含在urllib2.Request()表单应提交到的 URL 之后。
  8. \n
\n\n

服务器将返回结果网页,或者返回结果网页的重定向。如果是后者,则您\xe2\x80\x99 将需要GET向重定向响应中指定的 URL 发出请求。

\n\n

我希望这有某种意义?

\n