StackExchange API(検索エンドポイント)のURLを開き、結果を解析したいと思います[0]。ドキュメントには、すべての結果がJSON形式であると記載されています[1]。このURLをWebブラウザーで開くと、結果はまったく問題ありません[2]。ただし、Pythonプログラムを使用して開こうとすると、解析できないエンコードされたテキストが返されます。これがスニップです
á¬ôŸ?ÍøäÅ€ˆËç?bçÞIË
¡ëf)j´ñ‚TF8¯KÚpr®´Ö©iUizEÚD +¦¯÷tgNÈÑ.G¾LPUç?Ñ‘Ù~]ŒäÖÂ9Ÿð1£µ$JNóa?Z&Ÿtž'³Ðà#Í°¬õÅj5ŸE÷*æJî”Ï>íÓé’çÔqQI’†ksS™¾þEíqÝýly
URLを開くための私のプログラムは次のとおりです。私は特に間違っていることは何ですか?
''' Opens a URL and returns the result '''
def open_url(query):
request = urllib2.Request(query)
response = urllib2.urlopen(request)
text = response.read()
#results = json.loads(text)
print text
title = openRawResource, AssetManager.AssetInputStream throws IOException on read of larger files
page1_query = stackoverflow_search_endpoint % (1,urllib.quote_plus(title),access_token,key)
[1] https://api.stackexchange.com/docs
[2] http://hastebin.com/qoxaxahaxa.sm
ソウルション
私は解決策を見つけました。これがあなたがそれをする方法です。
request = urllib2.Request(query)
request.add_header('Accept-encoding', 'gzip')
response = urllib2.urlopen(request)
if response.info().get('Content-Encoding') == 'gzip':
buf = StringIO( response.read())
f = gzip.GzipFile(fileobj=buf)
data = f.read()
result = json.loads(data)
大きすぎるため、完全な出力を投稿できません。解凍とリクエストのヘッダーの設定について指摘してくれたEvertとKristapsに感謝します。さらに、別の同様の質問を調べたいと思うでしょう[3]。