私は書籍リストを作成するウェブサイト(www.7bks.com)を持っています。現時点ではかなりシンプルです。私は既にAmazon APIを使って本の情報や画像などをサイトに取り込んでいます。Amazon BrowseNodes APIで意味のあることをする
私がしたいのは、Amazon APIを使用してカテゴリやプルダウンのデータをプルバックして、自分のサイトのリストを閲覧する何らかの方法を作り出すことです。残念ながら、タグapiメソッドは廃止されました。
最も可能性の高い候補は、Amazon APIのBrowseNodesメソッド(http://docs.amazonwebservices.com/AWSEcommerceService/2005-10-05/ApiReference/BrowseNodesResponseGroup.html)ですが、この呼び出しから返されるデータはかなりです無意味で、私は私たちの頭を一緒にしてそれを理解する方法を見つけ出すことができると期待していました。
ここでは、取得するデータの種類を示すGoogleスプレッドシートを示します。そうしない人間として、リストを見てみると
:私はBrowseNodes APIを介して3冊の本をサンプルリスト(http://www.7bks.com/list/549002)を採取し、走りましたSci-Fiとファンタジーに関するリストである可能性が高いことを知るためには、本が何であるかを知る必要があります。それは主に、目が "カスタムストア"や "フィクション完了"などの無意味なカテゴリを破棄するのに優れているからです。
カテゴリのリストをデデュープしたり、すべての3冊の本に表示されるカテゴリを見てみましたが、まだかなりのデータが残っています。このデータをどのようにユーザーに意味のあるものに変えることができるか、あなたの考えが大好きです。
これまでのところ、データをスキャンしてハードコードされたリストに一致させることを考えました。だから、のようなもの:
カウント( "企業金融&法")場合にはカウント( "サイエンス・フィクション&ファンタジー")> 3は、リストは、SCI Fiの ある場合> 3、リストには、ビジネス
など
ですこれは非常に堅牢ですが、理想的にはもう少し柔軟性のある/強力なものを作りたいと思っています。
すべての提案を歓迎します。
これは高レベルの質問だと思うので、私はAPIを呼び出すのに影響されるべきではありませんが、私はPython/Appengine/Webappを使っています。
おかげ
トム
UPDATEデスクに対するヘッドの多く叩いた後、私は私の満足度にこのこの問題を解決するために管理してきました。それは複雑ではありませんが、私は何かしたいPythonコードを一緒にハックしました。私は自分のコードや提案を改善する人を歓迎します。
基本的にコードの根底にあるロジックは、 です。1)XMLツリーでは、開始するノードの最下位ノード(books>サブジェクト)が、本の実際の内容について最もよく推測されます。例えば。これのために:http://www.amazon.co.uk/Surface-Detail-Iain-M-Banks/dp/1841498939/それは "科学小説"を返します。ビンゴ。 2)一般的には、開始する検索結果(書籍>件名)に限定することで、多くの優れた情報が捨てられます。したがって、 3)私は同様の本のリストを取得しようとし、それらをオフに引っ張って、それが失敗した場合、私はちょうど元の本に割り当てられたカテゴリを取得します。
帳: http://www.amazon.co.uk/Surface-Detail-Iain-M-Banks/dp/1841498939/
タグ: 現代フィクション 製品
#takes as input the xml output of the amazon api browsenodes call
def getcategories(xml):
#fetches the names of all the nodes, stores them in a list
categories = []
for book in xml.getElementsByTagName('BrowseNode'):
category = get_text(book,'Name')
categories.append(category)
#turn the one list into a series of individual lists
#each individual list should be a particular tree from browsenode
#each list will end 'Books'
#the first item in the list should be the bottom of the tree
taglists = []
while 'Books' in categories:
find = categories.index('Books') + 1
list = categories[:find]
taglists.append(list)
for word in list:
categories.remove(word)
#now, we only return the first item from a list which contains 'Subjects'
final = []
for tagset in taglists:
while 'Subjects' in tagset:
final.append(tagset[0])
tagset.pop(tagset.index('Subjects'))
return final
class Browsenodes(webapp.RequestHandler):
def get(self):
#get the asin of the target book
asin = self.request.get('term')
if book_title:
#fetch the amazon key
api = API(AWS_KEY, SECRET_KEY, 'uk', processor=minidom_response_parser)
try:
#try getting a list of similar books - note the response group set to browsenodes
result = api.similarity_lookup(asin, ResponseGroup='BrowseNodes')
except:
#there aren't always a list of similar books, so as a failsafe just get the book I wanted.
result = api.item_lookup(asin, ResponseGroup='BrowseNodes')
final = getcategories(result)
#turn it into a set to de-dupe multiple listings of the same category
self.response.out.write(set(final))
はあなたの出力の風味を与えるために、次のよう
は、おそらく最高のあなたのコードを与えることによって説明します スペースオペラ サイエンスフィクション
http://www.amazon.co.uk/Godel-Escher-Bach-Eternal-anniversary/dp/0140289208/ 数学 の心理 歴史数理論理 一般AAS 人気の数学 科学、技術&医療 芸術マインドの&音楽 理念 アマゾン 数学 アーキテクチャ&ロジック 現代哲学:1900- ロジック クラシックス 物理学 形而上学 物理学の哲学 一般 技術科学の 代数的整数論 人工知能 歴史
http://www.amazon.co.uk/Flatland-Romance-Dimensions-Dover-Thrift/dp/048627263X/ 現代フィクション 哲学数学 一般AAS 人気の数学 理念 科学の、技術&医療 哲学マインド サイエンスフィクション 数学の 現代哲学:1900- 代数的数論 製品 クラシックス 形而上&ビジョナリー 神話&童話 トポロジ一般的な トピック 一般 理論的方法科学の 形而上学 人工知能 歴史
http://www.amazon.co.uk/Victoria-Condor-Books-Knut-Hamsun/dp/0285647598/ 現代フィクション 文学フィクション 心理 一般AAS クラシックス ショートストーリーs