2011-02-05 3 views
2

Для моих личных целей у меня около 300 авторов (полное имя) различных книг. Я хочу разбить этот список на «авторов-фантастов» и «авторов неигровой литературы». Если автор пишет и то, и другое, то большинство получает голосование.Категоризировать авторов книг как вымысел против научной литературы

Я посмотрел на Amazon Поиск продукта API: Я поиск по автору (in Python), но нет никакого способа, чтобы найти категорию книги (фантастика против остальных):

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

Какие есть варианты? Я предпочитаю делать это на Python.

+1

Вы можете найти в Google «авторскую фикцию» и «имя автора неигровой»? – btilly

+0

@btilly - интересно, но «Ричард Докинз фикция» возвращает * больше * результатов, чем «Ричард Докинз». –

+0

поэтому по вашим критериям он должен быть классифицирован как художественная запись. Я не согласен с этим выводом; судя по вашему комментарию, вы тоже этого не делаете. Поэтому вам нужно настроить свои критерии. –

ответ

4

Ну, вы можете попробовать другую услугу - Google Book Search API. Чтобы использовать Python, вы можете посмотреть gdata-python-api. В своем протоколе, в кормах результата есть узел <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 Книги и т.д. .)

+0

Хотя поиск на основе API не так надежен, как веб-база (запрос «title: .. and author: ..» ничего не вернет, а делает в Интернете), и многие книги не назначаются теме , это решение достаточно хорошо для моих потребностей, поскольку оно классифицирует большинство книг ficiton под тематикой «Fiction». –

2

Вы посмотрели BrowseNodes? Для меня (кто раньше не использовал этот API) BrowseNodes соответствует категориям продуктов Amazon. Возможно, вы найдете там больше информации.

+0

Я посмотрел на «BrowseNodes». В нем перечислены некоторые категории, но я не вижу категорию «неигровой» (какая категория в других случаях видна на amazon.com). Теперь я посмотрю API Google Книги ... –

0

Потратив некоторое время на общение с API Amazon, похоже, что они не предоставляют требуемую информацию.

Они не упоминают категории этого типа в своей документации, и если вы сериализуете материал, который посылает api, нет ни одного упоминания художественных или нехудожественных катетер.

Вы можете использовать это, чтобы распечатать красивую строку XML (вы можете направить ее в файл для удобства чтения) со всеми вещами, отправляемыми api.

from lxml import etree 

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

print etree.tostring(node, pretty_print=True) 

 Смежные вопросы

  • Нет связанных вопросов^_^