このスレッドの提案に従おうとしていますが、うまくいきません。この時点で、開こうとしているサイトから返されたデータを実際に取得していることを確認するために、非常に簡単なテストを実行したかっただけです。簡単なテストとして、Yahoo 天気 API を開こうとしました。このアドレスを Web ブラウザに入力すると、実際にデータが返されることを確認しました。これらのコード スニペットの両方を試しましたが、どちらも機能しません。
import urllib
params = urllib.urlencode({'w': 2482950})
f = urllib.urlopen("http://weather.yahooapis.com/forecastrss?%s" % params)
print f.read()
この例は、Python の Web サイトから直接引用したものです。これは次のように死ぬ:
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'
リモートホストに接続していないようです。私が間違っていることはありますか?