私は、グーグル検索APIを使用してグーグルに検索語を送り、最初の10件の結果をダウンロードするPythonプログラムを書いています。私は次のようにPython2.6でこれを行うことができました:
query = urllib.parse.urlencode({'q' : 'searchterm','start' : k},doseq=false)
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' \
% (query)
results = urllib.urlopen(url)
resultsjson = json.loads(results.read())
betterResults += resultsjson["responseData"]["results"]
Googleの検索APIは結果をjsonとして返すため、上記のコードを使用して結果を自分のjsonにダウンロードし、リスト(betterResults)に解析しました。
Python 3に切り替えたとき、私のプログラムは例外をスローし始めました。どうやら、Python 2.6では、urlopen()によって返されるオブジェクトは、jsonにロードできるファイルのようなオブジェクトです。Python 3.1では、返されるオブジェクトはHTTPResponseオブジェクトです。これには、json仕様で要求されているように、read()メソッドが含まれていますが、バイトオブジェクトです。そのため、2.6のときのように情報にアクセスできませんでした。
グーグルから返されたjsonにアクセスする方法はありますか?jsonで実行できたように、Python 3で結果を取得し、必要なフィールドを選択するにはどうすればよいですか?
どうもありがとうございました、bsg