2010-07-20 6 views
22

La mia applicazione deve recuperare informazioni su qualsiasi libro pubblicato in base a un codice ISBN, titolo o autore. Questo non è certo un requisito unico --- siti come Amazon.com, Chegg.com e persino software come Book Collector sembrano essere in grado di farlo facilmente. Ma non sono stato in grado di replicarlo.Come ottenere i metadati del libro?

Per chiarire, non ho bisogno di cercare l'intero database di libri --- solo un sottoinsieme limitato che è stato immesso, come in una raccolta di libri. Il database mi permetterebbe semplicemente di etichettare i libri immessi con i metadati necessari per abilitare la ricerca su quel sottoinsieme di libri. Quindi la scala non è il problema qui --- ottenere i metadati è.

Le opzioni che ho provato sono:

  1. Raschiare Amazon. Scraping le normali pagine di Amazon non era molto robusto per cose come autori mancanti, e mentre raschiare le pagine mobili più piccole era più veloce, condividevano gli stessi problemi con la robustezza dell'estrazione. Inoltre, la creazione di questo in un'applicazione è una chiara violazione dei Termini di servizio di Amazon.
  2. Raschiare la Biblioteca del Congresso. Anche se questo sembra avere meno implicazioni legali, facilità e robustezza sono stati di nuovo problemi.
  3. ISBNdb.com API. Mentre il servizio è gratuito fino a un certo punto e fa un buon lavoro nel restituire i metadati necessari, devo farlo per oltre 500 libri ogni giorno, a quel punto questo servizio costa soldi proporzionali per l'uso. Preferirei una soluzione di pagamento gratuita o una tantum che mi consenta di fare lo stesso.
  4. API di Google Book Data. Anche se questo sembra fornire le informazioni di cui ho bisogno, non posso visualizzare l'anteprima del libro come richiesto dai loro termini di servizio.
  5. Acquista una licenza per un database di libri. Ad esempio, aziende come Ingram o Baker & Taylor forniscono questi cataloghi a rivenditori e biblioteche. Questa soluzione è ovviamente costosa, quindi spero che ci sia una soluzione più elegante che mi sia sfuggita. Ma se no, e qualcuno su SO ha avuto una buona esperienza con un database particolare, sono disposto ad andare con quello.

Ho cercato di descrivere in dettaglio il mio approccio in modo che altri con meno libri possano usufruire delle soluzioni di cui sopra. Ma date le mie esigenze, sono alla fine del mio ingegno per recuperare i metadati del libro, quindi ogni suggerimento è molto apprezzato.

+0

Hai provato [API Goodreads] (https://www.goodreads.com/api)? – Veenit

risposta

4

Poiché è improbabile che si debbano recuperare gli stessi 500 libri al giorno: archiviare i dati recuperati da isbndb.com in un database e riempirli per libro.

+0

Mi piacerebbe farlo, ma il limite di 500 libri al giorno è un limite significativo ogni volta che carico ingenti (~ 30.000) inventari nel database. Sarebbe ideale per hackerare insieme un'API o acquistare l'accesso a un database esistente che potrei quindi utilizzare senza limiti sul numero di ricerche. – Saketh

+0

con quell'elevato numero di elementi sembra che tu stia percorrendo la via professionale. dubito che qualsiasi servizio ti consenta di clonare fondamentalmente i loro database senza pagare (seri) soldi. – akira

+0

Il problema è che l'inserimento è scaglionato (ad es. 10.000 libri alla volta, quindi nessuno per qualche tempo), ma l'inserimento deve essere eseguito contemporaneamente. – Saketh

1

A quanto pare, un sacco di biblioteche e altre organizzazioni rendere le informazioni come ad esempio "ISBN" disponibile attraverso leggibile dalla macchina Catalogazione aka MARC, è possibile trovare ulteriori informazioni su di esso here pure.

Ora sapendo il termine "giusto" per la ricerca ho scoperto WorldCat.org.

Forse tutta questa faccenda MARC ti dà un nuovo tipo di un'idea :)

+0

Non ci sono metodi ragionevoli aperti o pagati ma facili da usare per risolvere il problema utilizzando i record MARC, in quanto siti come WorldCat generalmente richiedono che uno sia una libreria per accedere alla propria API di ricerca. Sono stato sorpreso, perché uno potrebbe pensare che un catalogo pubblico di libri sarebbe facile da trovare! – Saketh

+0

quindi non è possibile utilizzare l'API di ricerca (http://worldcat.org/devnet/wiki/SearchAPIDetails)? – akira

+0

L'API WorldCat utilizza una chiave di accesso: ne ho richiesto una, ma se potessi trovare una soluzione indipendente sarebbe ottima. – Saketh