WEB高速化とやらが、ブームのようです。
確かに、早いことは良いことだ。
ふと、Yahoo商品検索APIから gzipで結果を取得できないかと、調べてみた。
どうやら、リクエストの時、Accept-encoding に gzip を指定すれば良いみたい。
こんな感じ。
-- ここから --
import urllib, urllib2, gzip, StringIO, json
url = "http://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?"
query = {
'appid' : <アプリケーションID>,
'affiliate_type' : 'yid',
'query' : "sony vaio"
}
url = url + urllib.urlencode(query)
req = urllib2.Request(url)
req.add_header('Accept-encoding', 'gzip')
res = urllib2.urlopen(req)
res_data = res.read()
sf = StringIO.StringIO(res_data)
f = gzip.GzipFile(fileobj=sf).read()
json_data = json.loads(f)
-- ここまで --
req.add_header で、gzip を指定しているのが、ポイントです。
print res.headers で、確認してみます。
こんな感じ。
Date: Sun, 14 Apr 2013 06:20:01 GMT
Vary: Accept-Encoding
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Cache-Control: private
Connection: close
Transfer-Encoding: chunked
ちなみに、gzip を指定しないと..
Date: Sun, 14 Apr 2013 06:19:19 GMT
Vary: Accept-Encoding
Content-Type: application/json; charset=utf-8
Cache-Control: private
Connection: close
Transfer-Encoding: chunked
ついでに、JSON を確認しておきましょう。
print json.dumps(json_data, sort_keys=True, indent=4)
とは言っても、元々、Yahooから取得するJSONデータは大きくないので、どれほど高速化に貢献できるのか、疑問ですけどね..(^^;;
0 件のコメント:
コメントを投稿