在Python中使用Urllib的意外行为

时间:2011-11-27 18:45:16

标签: python urllib

我的系统不在任何代理之后。

params = urllib.urlencode({'search':"August Rush"})
f = urllib.urlopen("http://www.thepiratebay.org/search/query", params)

这会进入一个无限循环(或者只是挂起)。我显然可以摆脱这个并使用FancyUrlOpener并自己创建查询而不是传递参数。但是,我认为按现在的方式行事是一种更好,更清洁的方法。

编辑:这更像是一个网络问题,我的Ubuntu工作站配置为不同的代理。不得不做一些改变,它的工作原理。谢谢!

2 个答案:

答案 0 :(得分:1)

发布的代码适用于我,在Windows上使用Python 2.7.2。

您是否尝试使用http-debugging工具(例如Fiddler2)查看您的计划与网站之间的实际对话?

如果您在localhost上的端口8888上运行Fiddler2,您可以执行此操作以查看请求和响应:

import urllib
proxies = {"http": "http://localhost:8888"}
params = urllib.urlencode({'search':"August Rush"})
f = urllib.urlopen("http://www.thepiratebay.org/search/query", params, proxies)
print len(f.read())

答案 1 :(得分:1)

这对我有用:

import urllib

params = urllib.urlencode({'q': "August Rush", 'page': '0', 'orderby': '99'})
f = urllib.urlopen("http://www.thepiratebay.org/s/", params)

with open('text.html', 'w') as ff:
    ff.write('\n'.join(f.readlines()))

我在启用了网络检查器的Google Chrome中打开了http://www.thepiratebay.org。我把" August Rush"进入搜索栏并按下“搜索”。然后我分析了发送的标题并完成了上面的代码。