我的系统不在任何代理之后。
params = urllib.urlencode({'search':"August Rush"})
f = urllib.urlopen("http://www.thepiratebay.org/search/query", params)
这会进入一个无限循环(或者只是挂起)。我显然可以摆脱这个并使用FancyUrlOpener并自己创建查询而不是传递参数。但是,我认为按现在的方式行事是一种更好,更清洁的方法。
编辑:这更像是一个网络问题,我的Ubuntu工作站配置为不同的代理。不得不做一些改变,它的工作原理。谢谢!
答案 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"进入搜索栏并按下“搜索”。然后我分析了发送的标题并完成了上面的代码。