Python 如何使用urllib填写表单和收集数据?

Python 如何使用urllib填写表单和收集数据?,python,urllib2,urllib,Python,Urllib2,Urllib,我来自一个科学计算和数字运算的世界 我正试图与互联网互动以编译数据,这样我就不必这么做了。其中一项任务是在Marriott.com上自动填写搜索结果,这样我就可以自己查看哪些是最好的交易 我尝试过一些简单的事情,比如 import urllib import urllib2 url = "http://marriott.com" values = {'Location':'New York'} data = urllib.urlencode(values) website = urll

我来自一个科学计算和数字运算的世界

我正试图与互联网互动以编译数据,这样我就不必这么做了。其中一项任务是在Marriott.com上自动填写搜索结果,这样我就可以自己查看哪些是最好的交易

我尝试过一些简单的事情,比如

import urllib
import urllib2

url = "http://marriott.com"


values  = {'Location':'New York'}
data = urllib.urlencode(values)

website = urllib2.Request(url, data)
response = urllib2.urlopen(website)
stuff = response.read()
f = open('test.html','w')
f.write(stuff)
我的问题如下:

  • 您如何知道网站是如何接收信息的?
    我怎么知道一个简单的“帖子”会起作用
  • 如果它很简单,我如何知道字典中“值”的名称
  • 如何检查它是否工作?最后的写行是我尝试查看输入是否正常工作,但这是不够的

  • 您需要阅读和分析相关方的HTML代码。每一个浏览器都有合适的工具来检查站点的DOM,分析网络流量和请求

    通常,您希望使用“机械化”模块来执行与网站的自动化交互。无法保证这在任何情况下都能奏效。如今,许多网站使用AJAX或更复杂的客户端编程,这使得很难用Python“模仿”人类用户

    除此之外:mariott.com网站不包含输入字段“Location”…所以你是在分析URL参数的形式和功能后猜测这些参数的

  • 我要检查的是使用Web调试代理来查看您发送的请求 首先用浏览器发送一个真实的请求,并将该请求与脚本发送的请求进行比较。尽量使两个请求匹配

    我用的是

    另一种方法是查看保存的html文件(在本例中为
    test.html
    ),并在浏览器中查看该文件,并将其与实际请求响应进行比较

  • 要想找到词典应该包含的内容,只需查看页面的页面来源,找出您试图填写的表单的名称。在这种情况下,
    “位置”
    实际上应该是
    “destinationAddress.destination”

    这是一张照片:

    因此,查看HTML代码以获得表单的名称,这就是字典中应该包含的内容。我知道Google Chrome和Mozilla Firefox都有查看html结构的工具(在我使用Google Chrome中inspect元素的图片中)

  • 有关urllib2的更多信息,请阅读


    我真的希望这能有所帮助:)

    您也可以看看urllib可能没有用处的地方(JS、AJAX等) 用于查找表单参数可能很有用。

    的可能重复项