1

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

我正在尝试与互联网交互以编译数据,所以我不必这样做。一项任务是自动填写 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)

我的问题如下:

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

3 回答 3

1

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

通常您希望使用mechanize模块来执行与网站的自动化交互。鉴于这在每种情况下都有效,因此无法保证。如今,许多网站使用 AJAX 或更复杂的客户端编程,因此很难“模拟”使用 Python 的人类用户。

除此之外:marriott.com 网站不包含输入字段“位置”...所以您在分析其形式和功能后猜测 URL 参数?

于 2013-09-20T04:25:15.297 回答
1
  1. 我要做的检查是使用 Web 调试代理来查看您发送的请求,首先使用您的浏览器发送一个真实的请求,并将该请求与您的脚本发送的请求进行比较。尝试使两个请求匹配

    我用来做这个的是Charles Proxy

    另一种方法是查看您保存的 html 文件(在这种情况下test.html)并在浏览器中查看它并将其与实际的请求响应进行比较

  2. 要找出字典应该包含的内容,请查看页面的页面源并找出您尝试填写的表格的名称。在你的情况下,"location"实际上应该是"destinationAddress.destination"

    这是一张图片: 姓名

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

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

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

于 2013-09-20T04:32:39.140 回答
1

您还可以查看splinter,其中 urllib 可能没有用(JS、AJAX 等)。对于找出表单参数,firebug可能很有用。

于 2013-09-20T04:35:02.540 回答