我正在尝试遵循此线程的建议,但它不起作用。在这一点上,我只想执行一个非常简单的测试,以确保我实际上得到了从我试图打开的站点返回的数据。对于我的简单测试,我试图打开 Yahoo 天气 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'
看来我从来没有连接到远程主机。任何想法我做错了什么?