2006-09-27
■[Python][XML]Raku API
【追記】Python用のRakuAPIライブラリをお探しの方は、こちらで紹介しているモジュールをお試しください。
楽天市場非公式ウェブサービスRaku APIというのが話題になっているようなので、早速Pythonで書いてみます。cElementTreeモジュール、もしくはPython2.5が必要です。
インターフェイスは、Perlの実装、PHPの実装を参考にしました。
try:
from xml.etree.ElementTree import iterparse
except ImportError:
from cElementTree import iterparse
import urllib
class RakuAPI(object):
BASE_URL = "http://rakuapi.ddo.jp/api"
def search(self, keyword, genre = None):
params = { 'query' : keyword }
if genre:
params['genre'] = genre
url = RakuAPI.BASE_URL + "?%s" % urllib.urlencode(params)
doc = urllib.urlopen(url)
for event, item in iterparse(doc):
value = {
'Result' : lambda x : dict([(a.tag, a.text) for a in x]),
'ResultSet' : lambda x : list([a.text for a in x])
}.get(item.tag, lambda x: x.text)(item)
item.text = value
return item.text
if __name__ == '__main__':
r = RakuAPI()
for x in r.search('Core 2 Duo'):
print x['Url']
出力はこんな感じになります。
http://item.rakuten.co.jp/ebest/4905524351569/ http://item.rakuten.co.jp/akindo/vgc-la70b/ http://www.rakuten.co.jp/maido/506196/1078740/#1024257 http://item.rakuten.co.jp/plusyu/macbook-good/ http://item.rakuten.co.jp/ebest/4547597524213/ http://www.rakuten.co.jp/maido/506196/1066765/#1010183 http://www.rakuten.co.jp/maido/860672/862052/871337/#806265 http://item.rakuten.co.jp/ebest-outlet/4905524351569/ http://www.rakuten.co.jp/mikasacamera/100076/126549/154166/#169540 http://item.rakuten.co.jp/ebest/4547597537770/
リンク元
- 174 http://rakuapi.ddo.jp/
- 138 http://www.kharakawa.com/kh.log/archives/2006/10/kakakucom_web_api_for_py_1.html
- 10 http://b.hatena.ne.jp/entry/http://rakuapi.ddo.jp/
- 9 http://d.hatena.ne.jp/naoya/20060926/1159263533
- 8 http://d.hatena.ne.jp
- 8 http://d.hatena.ne.jp/keyworddiary/Python
- 8 http://rakutenwebservice.blog71.fc2.com/blog-entry-26.html
- 8 http://www.kharakawa.com/kh.log/archives/python/
- 6 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=XSS&q=python+xml&btnG=Google+検索&lr=lang_ja
- 6 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGIC,GGIC:2006-49,GGIC:ja&q=python+xml+etree