Web Crawler Algorithmen mit Jsoup

BodyLAB

Bekanntes Mitglied
Guten Tag zusammen,

ich interessiere mich derzeit sehr für das Thema Informationen aus dem WWW zu beschaffen. Dafür würde ich mir sehr gerne meinen eigenen Web Crawler / Sraper bauen. So weit so gut, nur finde ich keine Lösung um eine Webseite komplett durchlaufen zu können. Habe auch bei google etc. nichts gefunden zu diesem Thema.
Kennt jemand einen Algorithmus denn man umsetzten kann in Java um zu gewährleisten eine Webseite komplett zu durchlaufen?

Es gibt Webseit-Copy Tools, diese sollten doch einen solchen Algorithmus implementiert haben um eben die Funktionsweise des Tools zu gewährleisten (sonst kopiere ich eben auch nicht die Gesamte Webseite :-D).

Vielleicht habe ich ja Glück und jemand von euch kennt sich mit diesem Thema aus :)

Meine Idee bzw. umgesetzter Ansatz ist dieser:
  • Besuche eine Übergebene Internetseite (mithilfe von jsoup)
  • Sammel Alle Links von dieser Seite (funktioniert sehr gut mit jsoup)
  • Sortiere alle Links aus die nicht zur Seite gehören
  • Speichere die Links in eine PostgreSQL Tabelle
  • Speichere die besuchten Links in eine zweite PostgreSQL Tabelle
Soweit so gut nur gibt es keine Gewährleistung das ich jede Seite auf der Webseite besuche! "Schlechte Lösung also"
Gibt es eine Möglichkeit das ganze über die Graphentheorie zu lösen, indem wir den Einstiegspunkt des Verzeichnis (die Übergebene URL) betrachten und von dieser dann Absteigen?
Das ganze Funktioniert dann bspw. bei Wikipedia nicht, zumindest fällt mir keine Lösung ein! Denn wenn eine URL übergeben wird wie z. B.: https://en.wikipedia.org/wiki/Albert_Einstein dann sammeln wir sämtliche Links von dort doch der Einstigspunkt der Seite ist doch Theoretisch dieser hier: https://en.wikipedia.org/wiki/ ODER? :-D

Ich hoffe man versteht mein Anliegen und jemand weiß wie es geht und kann mir Helfen :)
 

Robert Zenz

Top Contributor
Mit Schwierigkeiten...weil wie definierst du "alle Seiten" unter der Adresse? Wenn wir zum Beispiel dein Wiki-Beispiel nehmen, wie weit willst du denn nach oben gehen:

* https://en.wikipedia.org/wiki/Albert_Einstein
* https://en.wikipedia.org/
* https://wikipedia.org/

Das kann aber je nach Seite komplett unterschiedliche Kontexte sein. Und dann stellt sich noch die Frage, wenn du "Seiten" nicht anhand von Links findest, wie wuerde man denn sonst dorthin kommen als Benutzer?

Dein initialer Ansatz ist schon brauchbar, deine Kriterien sollte man aber ueberarbeiten, denke ich.
 

BodyLAB

Bekanntes Mitglied
Mit Schwierigkeiten...weil wie definierst du "alle Seiten" unter der Adresse? Wenn wir zum Beispiel dein Wiki-Beispiel nehmen, wie weit willst du denn nach oben gehen:
Das ist eben genau das was ich nicht verstehe.
Keine Ahnung wie weit eine Tool das eine Webseite Kopieren soll wie z. B. WebHTTrack dann laufen. Das Tool habe ich jedoch schon an einer Webseite getestet und zwar an dieser hier: https://zetcode.com/
Dort scheint es geklappt zu haben die gesamte Seite zu Kopieren (Hoffentlich habe ich damit nichts Strafbares gemacht! Das ist mir ehrlich gesagt auch etwas unklar. Hab die Seite nur bei mir auf dem PC derzeit noch und nicht weiter verteilt oder so etwas!).
Wie macht das Tool das dann? Vielleicht ja mit dem Ansatz von @LimDul. Das werde ich mir unbedingt anschauen.

Was manche Seiten anbieten ist eine sitemap.xml: https://de.wikipedia.org/wiki/Sitemaps-Protokoll

Da rufst du dann /sitemap.xml ab und hast da schön alle URLs aufgelistet, die du dann abrufen kannst.
Danke dafür :)
Dein initialer Ansatz ist schon brauchbar, deine Kriterien sollte man aber ueberarbeiten, denke ich.
@Robert Zenz wie könnte ich diese Kriterien überarbeiten also was genau meinst du?

Danke für die Antworten :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Crawler Allgemeine Java-Themen 6
J Crawler selbst geschreiben: OutOfMemoryError Allgemeine Java-Themen 14
M Queue für spider/crawler? Allgemeine Java-Themen 2
Q Suche Crawler Allgemeine Java-Themen 2
R Crawler mit Java schreiben Allgemeine Java-Themen 5
A Algorithmen Allgemeine Java-Themen 2
A Algorithmen Allgemeine Java-Themen 2
Gaudimagspam Algorithmen formulieren Allgemeine Java-Themen 1
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
D Algorithmen und Datenstrukturen in Java Allgemeine Java-Themen 40
S Algorithmen und Datenstrukturen Allgemeine Java-Themen 1
S Buch oder Website mit genialen Algorithmen..? Allgemeine Java-Themen 1
M Algorithmen und Datenstrukturen Allgemeine Java-Themen 6
C Rechenzeit verschiedener Algorithmen vergleichen Allgemeine Java-Themen 4
F deduktive algorithmen Allgemeine Java-Themen 0
X Suche Softwareimplementierung von Cryptographischen Algorithmen Allgemeine Java-Themen 3
M Aufgabenstellung unklar (Vorlesung Algorithmen und Datenstrukturen..) Allgemeine Java-Themen 2
K Frage zu ProgressBars, Algorithmen und Multithreading ->F Allgemeine Java-Themen 2
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
B Compiler-Fehler Probleme beim Kompilieren mit Jsoup Allgemeine Java-Themen 8
I JSOUP / Shiro und SessionId Allgemeine Java-Themen 5
T JSoup findet input Feld nicht?! Wie kann ich das Feld finden? Allgemeine Java-Themen 3
F Jsoup mit Javascript und onLoad Allgemeine Java-Themen 2
N Jsoup, Links weiter benutzen Allgemeine Java-Themen 5
F Selektornachhilfe JSoup Allgemeine Java-Themen 2
KeVoZ_ JSoup - HTML Tag entfernen Allgemeine Java-Themen 1
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2
J Jsoup Filtern Allgemeine Java-Themen 5
I JSoup Class auslesen Allgemeine Java-Themen 1
I Jsoup überprügen ob überhaupt was eingelesen wurde Allgemeine Java-Themen 10
T Jsoup: Mehrere Links nacheinander parsen Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben