楽天市場でよく買い物を行っているが、商品が豊富で本当に迷う。いったいどれくらいのジャンルの商品があるのかなと、ふと気になったので調べてみる事にした。
調査の方法としては、楽天の提供している「楽天ジャンル検索API」を使用し全てのジャンルを取得するプログラムを組んで調べる事にした。
再帰処理を使用し、親ジャンルを基に子ジャンルを全て取得する様にプログラムを組んだ。なお、楽天のAPIは1秒間に1アクセスしか許可していない事に気付かず1時間程ハマッてしまった。。
#-*- coding:utf-8 -*- import urllib import json import time import os url="http://api.rakuten.co.jp/rws/3.0/json?developerId=bb6b52db076f29f8631dd3755dd1fbd0&operation=GenreSearch&version=2007-04-11&genrePath=0&genreId=%s" fp=open(os.path.join(os.path.dirname(__file__),"genre.txt"),"w") def main(): topGenre=initGenreGet() mainGenreGet(topGenre) def initGenreGet(): array=[] pyjson=json.loads(urllib.urlopen(url % "0").read().decode("utf_8","ignore")) for line in pyjson["Body"]["GenreSearch"]["child"]: array.append(line) return array def mainGenreGet(array): for line in array: print >>fp,"%s,%s,%s" % (line["genreLevel"],line["genreId"],line["genreName"].encode("utf_8","ignore")) genreArray=nextGenreGet(line) if len(genreArray): mainGenreGet(genreArray) def nextGenreGet(code): pyjson=json.loads(urllib.urlopen(url % code["genreId"]).read().decode("utf_8","ignore")) time.sleep(1) return pyjson["Body"]["GenreSearch"]["child"] if __name__ == '__main__': main()
【取得結果】
ジャンルの取得結果だが、全部で49,018ジャンルある事が分かった。1000ジャンルぐらいだろうと思っていた為、正直予想外であった。ちなみに、朝の六時ぐらいから処理を実施し終わったのが夜の8時。やっぱ、一秒間に1回しかアクセス出来ないのは痛いな。。楽天のジャンル一覧を取得出来たので、この情報を基に商品のランキング等を作成していきたい。