0

我访问了这个网站: http ://www.avcodes.co.uk/airlcodesearch.asp

并且,选择了最后一个选项:

Select a letter for ICAO Codes: and chose "B"

然后点击Submit.

我使用来自 Firefox 的 Tamper Data 和 Live HTTP Headers 来监控进度。

而且,一切都很好.. 实现相同效果所需的直接 URL 是这样的:

http://www.avcodes.co.uk/airllistres.asp?statuslst=Y&iataairllst=&icaoairllst=B&B1=提交

但是,当使用上述 URL 时..不会返回数据。

我缺少什么以及如何找到正确的 URL。

这个练习的目标是一旦我知道了 URL。我将使用一个 python 脚本来循环从 A 到 Z 并从所有页面中获取内容。

请帮忙。

4

3 回答 3

6

我假设您已获得该网站的许可,可以使用他们的数据库,并且您可以抓取他们的网站。在任何其他情况下,这样做可能是非法的,具体取决于司法管辖区。

这里的问题是您正在使用 GET 来检索内容,但该网站需要一个 POST。Get 和 POST 不是等价的,尽管一些程序员认为它们是相同的(例如,在 PHP 中,您可以使用and$_REQUEST代替)。这个网站不像他们,所以你必须发布到这​​个网站。$_GET$_POST

在 Python 中,您可以将数据发布到这样的 url:

import urllib2
u = urllib2.urlopen("http://www.avcodes.co.uk/airllistres.asp", "statuslst=Y&iataairllst=&icaoairllst=B&B1=Submit")
print u.read()
于 2012-06-06T15:07:03.213 回答
2

POST 和 GET 是不等价的。如果该站点被编写为仅接受 GET,那么就可以了。

但是,您可以轻松编写使用 POST 的脚本。

于 2012-06-06T15:05:23.340 回答
1

那是因为您需要在该页面上使用 POST 方法。

尝试这个:

pip install requests

然后:

>>> import requests
>>> r = requests.post('http://www.avcodes.co.uk/airllistres.asp?statuslst=Y&iataairllst=&icaoairllst=B&B1=Submit')
>>> r.text

但是,除了上述查询字符串参数之外,您似乎还需要弄清楚一些发布数据才能真正返回数据。

于 2012-06-06T15:08:36.367 回答