Web Scraping mit Java


72

Ich kann keine gute Java-basierte Web-Scraping-API finden. Die Site, die ich kratzen muss, bietet auch keine API. Ich möchte mit einigen über alle Webseiten iterieren pageIDund die HTML-Titel / andere Dinge in ihren DOM-Bäumen extrahieren.

Gibt es andere Möglichkeiten als Web Scraping?

Antworten:


99

jsoup

Das Extrahieren des Titels ist nicht schwierig, und Sie haben viele Optionen. Suchen Sie hier im Stapelüberlauf nach " Java HTML-Parsern ". Einer von ihnen ist Jsoup .

Sie können mit DOM auf der Seite navigieren, wenn Sie die Seitenstruktur kennen (siehe http://jsoup.org/cookbook/extracting-data/dom-navigation)

Es ist eine gute Bibliothek und ich habe sie in meinen letzten Projekten verwendet.


2
Danke, es ist eine schöne Bibliothek ohne Abhängigkeiten, also ziemlich leicht. Außerdem ist es kopflos, sodass kein Browser erforderlich ist (ich hatte Probleme mit Selenium beim Öffnen von Chrome und konnte HtmlUnit überhaupt nicht verwenden ). Selen muss realistischer sein, aber diese Bibliothek kann in den meisten Fällen den Zweck erfüllen und ist wirklich einfach einzurichten: Fügen Sie die Abhängigkeit hinzu, und Sie können loslegen.
Ferran Maylinch

Ausgezeichnete Bibliothek in der Tat. Einfache Einrichtung und leistungsstarke Regex-Unterstützung. doc.select ("li [id ^ = cosid_]"). Cool.
EMM

Ich habe kürzlich mein Web-Scraping-Framework als Open-Source-Version bereitgestellt, mit dem Sie nicht nur die Dokumente mit Jsoup und HtmlUnit analysieren, sondern auch die Parallelisierung für Sie übernehmen und bei Bedarf einen großen Pool von Proxyservern verwalten können: github.com/subes/invesdwin- Webproxy
Subes

@subes Kann Ihr Framework für Webanalysetests verwendet werden?
Vikramvi

Meine Anforderung ist die Automatisierung von "Web Analytics". Kann Jsoup alle Testaktivitäten ausführen?
Vikramvi

22

Am besten verwenden Sie den Selenium Web Driver

  1. Bietet dem Codierer visuelles Feedback (sehen Sie Ihr Scraping in Aktion, sehen Sie, wo es aufhört)

  2. Genau und konsistent, da es den von Ihnen verwendeten Browser direkt steuert.

  3. Langsam. Schlägt keine Webseiten wie HtmlUnit, aber manchmal möchten Sie nicht zu schnell schlagen.

    Htmlunit ist schnell, aber schrecklich im Umgang mit Javascript und AJAX.


1
Fügen Sie hier hinzu, dass Sie zur Steigerung der Leistung in Selenium Web Driver den Headless-Browser (Chrome, Firefox) verwenden können
Adi Ohana

14

HTMLUnit kann zum Web-Scraping verwendet werden. Es unterstützt das Aufrufen von Seiten sowie das Ausfüllen und Senden von Formularen. Ich habe dies in meinem Projekt verwendet. Es ist eine gute Java-Bibliothek für Web Scraping. Lesen Sie hier für mehr




4

Sie könnten in jwht-Scrapper schauen !

Dies ist ein vollständiges Scrapping-Framework, das alle Funktionen bietet, die ein Entwickler von einem Web-Scrapper erwarten kann:

Es funktioniert mit (jwht-htmltopojo) [ https://github.com/whimtrip/jwht-htmltopojo ) lib, die itsef verwendet Jsoup, das von mehreren anderen Personen hier erwähnt wurde.

Zusammen helfen sie Ihnen dabei, großartige Scrapper zu erstellen, die HTML direkt POJOs zuordnen und alle klassischen Scrapper-Probleme in nur wenigen Minuten umgehen!

Hoffe das könnte einigen Leuten hier helfen!

Haftungsausschluss, ich bin derjenige, der es entwickelt hat, zögern Sie nicht, mir Ihre Bemerkungen mitzuteilen!


3

Schauen Sie sich einen HTML-Parser wie TagSoup, HTMLCleaner oder NekoHTML an.


3

Wenn Sie das Scraping großer Seiten- oder Datenmengen automatisieren möchten, können Sie Götz ETL ausprobieren .

Es ist vollständig modellgetrieben wie ein echtes ETL-Tool. Datenstruktur, Aufgabenworkflow und zu durchsuchende Seiten werden mit einer Reihe von XML-Definitionsdateien definiert, und es ist keine Codierung erforderlich. Die Abfrage kann entweder mit Selectors mit JSoup oder XPath mit HtmlUnit geschrieben werden.


Gefragt vor 7 Jahren, 6 Monaten.
Eritreer

2

Für Aufgaben dieses Typs verwende ich normalerweise Crawller4j + Jsoup.

Mit crawler4j lade ich die Seiten von einer Domain herunter, Sie können angeben, welche ULR mit einem regulären Ausdruck.

Mit jsoup habe ich die HTML-Daten "analysiert", nach denen Sie gesucht und mit crawler4j heruntergeladen haben.

Normalerweise können Sie Daten auch mit jsoup herunterladen, aber Crawler4J erleichtert das Auffinden von Links. Ein weiterer Vorteil der Verwendung von crawler4j besteht darin, dass es sich um Multithreading handelt und Sie die Anzahl der gleichzeitigen Threads konfigurieren können

https://github.com/yasserg/crawler4j/wiki


1

Normalerweise verwende ich Selen, eine Software zum Testen der Automatisierung. Sie können einen Browser über einen Web-Treiber steuern, sodass Sie keine Probleme mit Javascripts haben und es normalerweise nicht sehr erkannt wird, wenn Sie die Vollversion verwenden. Headless Browser können besser identifiziert werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.