2011-02-04 19 views
5

Devo fornire un URL di base (come http://www.wired.com) e ho bisogno di spider attraverso l'intero sito emettendo una serie di pagine (fuori dall'URL di base). C'è qualche biblioteca che farebbe il trucco?Ricerca di un semplice spider Java

Grazie.

risposta

5

Ho usato Web Harvest un paio di volte, ed è abbastanza buono per il web scraping.

Web-Harvest è dati Web Open Source Strumento di estrazione scritto in Java. E ' offre un modo per raccogliere le pagine Web desiderate ed estrarre i dati utili da loro. Per fare ciò, lo strumento utilizza tecniche consolidate e tecnologie per la manipolazione di testo/xml come XSLT, XQuery e Espressioni regolari. Web-Harvest si concentra principalmente su siti Web basati su HTML/XML che continuano a costituire una grande maggioranza del contenuto Web . D'altra parte, potrebbe essere facilmente integrato dalle librerie Java personalizzate al fine di aumentare le capacità di estrazione di .

In alternativa, si può rotolare il proprio raschietto web utilizzando strumenti come JTidy prima convertire un documento HTML in XHTML, e quindi l'elaborazione delle informazioni è necessario con XPath. Ad esempio, un'espressione XPath di molto originale per estrarre tutti i collegamenti ipertestuali da http://www.wired.com, sarebbe qualcosa come //a[contains(@href,'wired')]/@href. È possibile trovare alcuni esempi di codice per questo approccio in questo answer a una domanda simile.

+0

Grazie per questa risorsa. Sono stato in grado di adattarlo con successo. Tuttavia, se una risposta della pagina web risulta in un 500, il raschiatore non riesce (ad esempio - http://www.allure.com/magazine/flipbook) emettendo un "Un carattere XML non valido (Unicode: 0x0) è stato trovato nel contenuto dell'elemento del documento. " Qualche idea su questo messaggio di errore? – rs79

2

"Semplice" non è forse un concetto pertinente qui. è un compito complesso. Raccomando nutch.