我正在尝试遵循this thread的建议,但它不起作用。在这一点上,我只是想进行一个非常简单的测试,以确保我实际上从我试图打开的网站返回数据。对于我的简单测试,我试图打开雅虎天气api。我已经确认在网络浏览器中输入此地址确实会返回数据。我已经尝试了这两个代码片段,但两个都没有工作。
import urllib
params = urllib.urlencode({'w': 2482950})
f = urllib.urlopen("http://weather.yahooapis.com/forecastrss?%s" % params)
print f.read()
这个例子直接来自Python网站。这死了:
IOError:[Errno套接字错误] [Errno 110]连接超时
我也试过像这样使用httplib:
import httplib
conn = httplib.HTTPConnection(host='weather.yahooapis.com', timeout=10)
req = '/forecastrss?w=2482950'
try:
conn.request('GET',req)
except:
print "Didn't work"
content = conn.getresponse().read()
print content
尝试此操作会出现以下错误:
self.fp = sock.makefile('rb', 0)
AttributeError: 'NoneType' object has no attribute 'makefile'
似乎我没有连接到远程主机。我有什么想法吗?
答案 0 :(得分:0)
问题确实是防火墙。我添加了以下代码以使其工作:
proxy_support = urllib2.ProxyHandler({"http":"http://<proxy>:<port>"})
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
html = urllib2.urlopen(url).read()
print html