Ich möchte den Inhalt einer Seite erhalten und die spezifischen Teile daraus extrahieren. Soweit ich weiß, gibt es mindestens zwei Lösungen für diese Aufgabe: Crawler4j und Jsoup .
Beide können den Inhalt einer Seite abrufen und Unterabschnitte daraus extrahieren. Das einzige, was ich nicht verstehe, was ist der Unterschied zwischen ihnen? Es gibt eine ähnliche Frage , die als beantwortet markiert ist:
Crawler4j
ist ein Crawler,Jsoup
ist ein Parser.
Aber ich habe gerade überprüft, dass Jsoup 1.8.3
zusätzlich zu einer Parsing-Funktion auch eine Seite crawlen kann, während Crawler4j
nicht nur die Seite crawlen, sondern auch ihren Inhalt analysieren kann.
Können Sie also bitte den Unterschied zwischen Crawler4j
und Jsoup
klären?
Crawling ist etwas, das größer ist als nur den Inhalt eines einzelnen URIs abzurufen. Wenn Sie nur den Inhalt einiger Seiten abrufen möchten, ist es nicht sinnvoll, etwas wie Crawler4J
zu verwenden.
Sehen wir uns ein Beispiel an. Angenommen, Sie möchten eine Website crawlen. Die Anforderungen wären:
About
Seite hat einen Link für die Seite Home
, aber wir haben bereits den Inhalt von Home
Seite, also besuchen Sie ihn nicht nochmal). Home
Seite abrufen. Dies ist ein einfaches Szenario. Versuche das mit Jsoup
zu lösen. All diese Funktionalität muss von Ihnen implementiert werden. Crawler4J oder irgendein Crawler-Mikro-Framework für diese Angelegenheit würde oder sollte eine Implementierung für die obigen Aktionen haben. Die starken Qualitäten von Jsoup
glänzen, wenn Sie entscheiden müssen, was Sie mit dem Inhalt machen wollen.
Sehen wir uns einige Anforderungen für das Parsing an.
HTML
-Spezifikationen entsprechen) Hier kommt Jsoup
zum Einsatz. Natürlich gibt es hier einige Überschneidungen. Einige Dinge sind möglicherweise mit Crawler4J
oder Jsoup
möglich, aber das macht sie nicht gleichwertig. Sie könnten den Mechanismus zum Abrufen von Inhalten aus Jsoup
entfernen und trotzdem ein erstaunliches Werkzeug sein. Wenn Crawler4J
den Abruf entfernen würde, würde es die Hälfte seiner Funktionalität verlieren.
Ich habe beide im selben Projekt in einem realen Szenario verwendet.
Ich habe eine Website gecrawlt und dabei die Stärken von Crawler4J
für alle im ersten Beispiel erwähnten Probleme genutzt. Dann habe ich den Inhalt jeder Seite, die ich abgerufen habe, an Jsoup
übergeben, um die benötigten Informationen zu extrahieren. Könnte ich das eine oder das andere nicht benutzt haben? Ja, könnte ich, aber ich hätte alle fehlenden Funktionen implementieren müssen.
Daher ist der Unterschied, Crawler4J
, ein Crawler mit einigen einfachen Operationen zum Parsen (Sie könnten die Bilder in einer Zeile extrahieren), aber es gibt keine Implementierung für komplexe CSS
-Abfragen. Jsoup
ist ein Parser, der Ihnen eine einfache API für HTTP
Anfragen bietet. Für etwas Komplexeres gibt es keine Implementierung.
Tags und Links java web-crawler jsoup html-parsing crawler4j