背景:我正在阅读Toby的“编程集体智能”一书;特别是第5章中的Kayak示例。
我可以用浏览器()导航到Kayak结果页面(全部是XML):http://www.kayak.com/s/basic/flight?searchid=[searchidhere]&c=999&apimode=1&=[sessionidhere]&version=1
(我以前已经成功地创建了会话ID和搜索ID )
但是,当我使用
import urllib2
import xml.dom.minidom
url = 'http://www.kayak.com/s/basic/flight?searchid=NQnNrj&c=999&apimode=1&_sid_=19-y2WnyKIGm1FuaLfo2keV&version=1'
doc=xml.dom.minidom.parseString(urllib2.urlopen(url).read())
我得到以下答复
[...discarded top bit of Traceback...]
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
我已经用Python2.5.4和Python2.7.1对其进行了测试。我几乎100%肯定我以前做过这个实验,它成功了,我不知道我哪里出了问题。
有人能帮忙吗?谢谢!
发布于 2011-03-01 18:37:42
可能你的问题和饼干有关。巧合的是,我通常在不启用Javascript或Cookies的情况下浏览网页,而在这种情况下,我点击了链接。
没有JS,Cookies和参考信息,我有404页。在启用所有这些功能之后,我得到了一个“搜索过期”页面。为了证实我的理论,我启用了JS和Referer,并再次单击该链接,这再次将我带到404页。
因此,使用HTTPCookieProcessor构建一个开放程序,这个问题应该得到解决。
问候
发布于 2011-03-01 18:31:44
最可能的解释是你的搜索已经失效(过时了)。Chrome可能会显示缓存中的数据,尝试在chrome中刷新页面并查看结果是否仍然存在。或者,网页可能会期望先前保存的cookie。
发布于 2011-03-01 18:36:30
如果您也在浏览器中尝试上述查询,您将得到404,只是他们选择格式化404并显示它。请求从302到404,urllib2也在这样做。
https://stackoverflow.com/questions/5162655
复制