2011-11-27 54 views
0

我的系统不在任何代理之后。Python中的Urllib意外的行为

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

这进入了一个无限循环(或只是挂起)。我显然可以摆脱这一点,并使用FancyUrlOpener并自己创建查询,而不是传递参数。但是,我认为按照我现在所做的方式是一种更好和更干净的方法。

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

回答

1

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

您是否尝试过使用http调试工具(如Fiddler2)来查看您的程序和网站之间的实际对话?

如果在本地主机端口8888上运行Fiddler2,你可以做到这一点,看的请求和响应:我与谷歌的Chrome中打开http://www.thepiratebay.org

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())) 

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()) 
+0

谢谢你向我介绍Fiddler。 – Hick

1

这对我的作品与网络检查器启用。我将“August Rush”放入搜索栏并按下“搜索”。然后我分析了发送的头文件并执行了上面的代码。

+0

连接仍超时。 – Hick

+0

如果两个人工作,我想你有网络问题... – warvariuc