1

このスレッドの提案に従おうとしていますが、うまくいきません。この時点で、開こうとしているサイトから返されたデータを実際に取得していることを確認するために、非常に簡単なテストを実行したかっただけです。簡単なテストとして、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'

リモートホストに接続していないようです。私が間違っていることはありますか?

4

1 に答える 1