将图书作者分类为小说与非小说

时间:2011-02-05 05:12:54

标签: python api amazon categorization

出于个人目的,我有大约300名作者(全名)的各种书籍。我想将这个列表划分为“小说作者”和“非小说作者”。如果作者同时写两篇,那么大多数人都会得到投票。

我查看了Amazon Product Search API:我可以按作者搜索(in Python),但无法找到图书类别(小说与休息):

>>> node = api.item_search('Books', Author='Richard Dawkins')
>>> for book in node.Items.Item:
...     print book.ItemAttributes.Title

我有什么选择?我更喜欢在Python中这样做。

3 个答案:

答案 0 :(得分:4)

好吧,您可以尝试其他服务 - Google Book Search API。要使用Python,您可以查看gdata-python-api。在其协议中,在结果Feed中有一个节点<dc:subject> - 可能that's您需要的内容:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
      xmlns:gbs="http://schemas.google.com/books/2008" 
      xmlns:dc="http://purl.org/dc/terms"
      xmlns:gd="http://schemas.google.com/g/2005">
  <id>http://www.google.com/books/feeds/volumes</id>
  <updated>2008-08-12T23:25:35.000</updated>

<!--  a loot of information here, just removed those nodes to save space.. -->

    <dc:creator>Jane Austen</dc:creator>
    <dc:creator>James Kinsley</dc:creator>
    <dc:creator>Fiona Stafford</dc:creator>
    <dc:date>2004</dc:date>
    <dc:description>
      If a truth universally acknowledged can shrink quite so rapidly into 
      the opinion of a somewhat obsessive comic character, the reader may reasonably feel ...
    </dc:description>
    <dc:format>382</dc:format>
    <dc:identifier>8cp-Z_G42g4C</dc:identifier>
    <dc:identifier>ISBN:0192802380</dc:identifier>
    <dc:publisher>Oxford University Press, USA</dc:publisher>
    <dc:subject>Fiction</dc:subject>
    <dc:title>Pride and Prejudice</dc:title>
    <dc:title>A Novel</dc:title>
  </entry>
</feed>

当然,此协议会为您提供与本书相关的一些管理信息(如Google图书等可见或不可用)。

答案 1 :(得分:2)

你看过BrowseNodes了吗?对我(之前没有使用过此API),似乎BrowseNodes对应亚马逊的产品类别。也许你在那里找到更多信息。

答案 2 :(得分:0)

花了一些时间搞乱亚马逊API,看起来他们没有提供你想要的那种信息。

他们没有在他们的文档中提到那种类型的类别,如果你序列化api发送给你的东西,那么就没有提到过小说或非虚构的catergories。

您可以使用它来打印一个漂亮的XML字符串(您可能希望将其指向一个文件以便于阅读),其中包含api发送的所有内容。

from lxml import etree

node = api.item_search('Books', Author='Richard Dawkins')

print etree.tostring(node, pretty_print=True)