Erste Schritte Programmieren eines Web Crawlers mit Java

Benny308

Mitglied
Hallo liebes Forum,

ich möchte gerne einen web crawler programmieren, der mir spezifische Informationen von definierten Internetseiten besorgt.
Ich habe im Internet ein Video gefunden mit einem Beispiel, welches meinen Wünschen sehr nahe kommt:

Web Scraping, Screen Scraping, Web Data Mining, Data Extractor - YouTube

Nun zu meiner Frage: Ich bin ein blutiger Anfänger im Bereich der Programmierung. Ist es prinzipiell möglich mit Java solch einen Web Crawler zu programmieren? Ist es möglich für einen normalsterblichen Anfänger mit normalen Computerkenntnissen dies im Eigenstudium zu erlernen (vielleicht kennt ihr empfehlenswerte Literatur)?
Wie aufwendig ist es, dieses Programm zu schreiben? Ich bin berufstätig und bräuchte es für berufliche Zwecke so schnell wie möglich, habe aber durch meinen Job natürlich nur eingeschränkt Zeit zum Arbeiten an diesem Projekt.

Ich wäre euch sehr dankbar für ein paar Tipps und Einschätzungen bzw. ob eine alternative Programmiersprache sinnvoll wäre.

Vielen Dank und beste Grüße

Benny
 
Das ist mit Java ohne Probleme Möglich. Was du dafür brauchst ist folgendes:
- HTML Code einer Seite lesen
- HTML Code parsen
- gesuchte Informationen heraussuchen

Falls du allerdings keine Ahnung vom Programmieren hast, dann ist das nicht in nen paar Tagen machbar. Wenn du das zeitnah brauchst, dann solltest du dich vielleicht mal an die Jobbörse wenden.
 
Vielen Dank für deine schnelle Antwort.
Natürlich brauche ich das Programm so schnell wie möglich, aber ich möchte es gerne selbst schreiben, weil ich nicht bei jedem Problem oder Erweiterung wieder abhängig sein will. Ich habe die Möglichkeit einen Einführungskurs zu besuchen und will mir den Rest über Bücher bzw. mit Hilfe des Forums beibringen.

Wenn ich dich noch um eine realistische Einschätzung bitten dürfte. Wie anspruchsvoll ist die Programmierung eines Web Crawler?

Ist es bis zum Ende des Jahres für einen unerfahrenen Hobbyprogrammierer möglich. Ist einfach für mich wichtig, damit ich selbst den Aufwand einschätzen kann und es im Unternehmen kommunizieren kann.
Hast du irgendwelche Literaturempfehlungen?

Nochmals besten Dank!
 
Wie anspruchsvoll ist die Programmierung eines Web Crawler?
Das kommt sehr auf die Problemstellung an. Beispiele: Soll er 24/7-tauglich sein oder nur auf Anfrage operieren? Soll er spezielle Seiten nach speziellen Informationen absuchen, oder geht er auf alles los, was ihm so einfällt? Sollen mehrere Crawler gleichzeitig arbeiten können? Wie gut soll er sich von Abstürzen erholen?

Allein die letzte Frage könnte, wenn man es selbst implementieren wollte, ein Mini-Projekt formen, das sich nur mit dieser Frage beschäftigt und selbst vielleicht genauso groß ist wie der Rest des Crawlers.

Ark
 
Danke für deine Antwort!

Was ich bis jetzt sagen kann, ist, dass der Crawler etwa 200-300 Internetseiten, welche zuvor definierte wurden, durchsuchen soll. Er muss dabei nicht die ganze Seiten durchsuchen, sonder nur ein bestimmter Teil der Seiten (auch zuvor festgelegt). Ich habe bis jetzt nur einen Crawler geplant. Die Ergebnisse soll er dann in eine CSV oder ähnliches exportieren.

Was meinst du genau mit: Wie gut soll er sich von Abstürzen erholen?
Wenn er bei der Suche abstürzt, wäre es nicht schlimm, wenn die Daten verloren gehen. Mann konnte Ihn theoretisch wieder neu starten. Die Suche wird einmal die Woche durchgeführt.

Bin leider noch ganz am Anfang der Materie, weshalb ich einige Sachen noch nicht richtig beantworten kann, sorry.???:L

Ich habe einige Tutorials bei Youtube gefunden und Bücher bei Galileo Computing, die ich mal durcharbeiten will.

Kannst du den Aufwand nun besser Einschätzen? Das Endresultat soll dem Youtube Video, welches ich in meinem ersten Post veröffentlicht habe sehr nahe kommen.

Besten Dank nochmals!

Benny
 
Hallo,

es gibt da diese Online Learning Plattformen wie coursera und udacity, die ich garnicht mal so schlecht finde.

Und eben auf Udacity ist ein Kurs Introduction to Computerscience, der einem das Programmieren beibringen will.

Udacity - Introduction to Computer Science Course (CS101)

In diesem Kurs wird das interaktiv mit der Programmiersprache Python und eben dem Beispiel erstellen einer Suchmaschine gemacht.

Das ganze ist kostenfrei, auf Englisch und definitiv einen Blick wert.
 
Vielen Dank für den super Tipp!!!

Werde ich mir auf jeden Fall anschauen. Ich denke ich setze mich einfach mal dran.

Danke ans Forum für eure Hilfe.

P.S. Bei Fragen während des Projekts werde ich auf jeden Fall auf euch zukommen😀

Grüße und ein schönes Restwochenende
 
Bin leider noch ganz am Anfang der Materie, weshalb ich einige Sachen noch nicht richtig beantworten kann, sorry.???:L
Ja, Web Scraping ist ein Thema, das schnell komplex werden kann. Hier noch ein paar Fragen, um sich da schon mal Gedanken zu machen bzw. Informationen einzuholen:
  • Lädt die Seite Inhalte dynamisch (z.B. über JavaScript) nach?
  • Versucht die Gegenstelle, Scraper zu blockieren bzw. an ihrer Arbeit zu hindern?
  • Gibt es keine für Scraper gemachte Schnittstelle (etwa via XML)?
  • Ist eine Authentifizierung, verschlüsselte Verbindung oder Ähnliches erforderlich? Müssen Formulare ausgefüllt werden?
  • Soll sich der Scraper an bestimmte Restriktionen (etwa Maximalgeschwindigkeiten oder Proxys) halten?
  • Soll sich der Scraper an robots.txt halten?

Ich habe bis jetzt nur einen Crawler geplant.
Vermutlich antwortest du auf die Frage, ob mehrere Crawler gleichzeitig arbeiten sollen. In meiner Frage ging es eher darum, ob mehrere Crawler, die alle das Gleiche leisten (könnten), gemeinsam z.B. auf verschiedenen Maschinen arbeiten können sollen, damit immer einer arbeiten kann, falls ein anderer ausfällt.

Da du aber Folgendes geschrieben hast,
Wenn er bei der Suche abstürzt, wäre es nicht schlimm, wenn die Daten verloren gehen. Mann konnte Ihn theoretisch wieder neu starten. Die Suche wird einmal die Woche durchgeführt.
gehe ich davon aus, dass das alles nicht so wild ist.

Die Ergebnisse soll er dann in eine CSV oder ähnliches exportieren.
Es gibt hier mehrere Threads, die sich nur damit beschäftigen, wie man CSV korrekt einliest. Schon damit kann man sich also eine Weile beschäftigen – oder nach fertigen Libs suchen.

Kannst du den Aufwand nun besser Einschätzen? Das Endresultat soll dem Youtube Video, welches ich in meinem ersten Post veröffentlicht habe sehr nahe kommen.
Je nachdem, wie mächtig das Werkzeug und/oder seine Nutzerschnittstellen sein sollen, kann z.B. allein die Dokumentation der CLI-Version ganz schön Platz einnehmen. Beispiel: wget Wie es aussieht, scheint das Problem aber sehr stark einschränkbar zu sein. Eine total primitive Primitivstversion könnte man unter Verwendung einer Bibliothek zum Parsen von HTML (dazu gibt's auch schon viele Threads) schon in einer main-Methode mit deutlich weniger als 200 Zeilen unterkriegen.

Wenn aber der Betreiber des Webauftritts was gegen Scraper hat, kann das schnell nach hinten losgehen. Dann müssen ausgefeiltere Algorithmen her, die z.B. menschliches Surfverhalten emulieren, Bilder oder Stylesheets nachladen usw. Nötigenfalls musst du sogar einen bekannten Browser (z.B. Firefox) emulieren. Da kann es dann sein, dass du eine ganze Weile nur damit beschäftigt bist, mit Wireshark das Verhalten eines Browsers nachzuahmen. Scraping ist dahingehend also auch ein Risiko.

Ark
 
Ich würde dir Selenium empfehlen. Damit kannst du innerhalb von Java Firefox/Chrome/Internet Explorer/... fernsteuern, ihm Befehle geben und Daten auslesen, die du dann direkt in Java weiterverarbeiten kannst. Vorteil: Du brauchst dich nicht um http, javascript, cookies, ... kümmern, das wird alles vom Browser gemacht. Du brauchst nur sagen auf welche Elemente der Seite geklickt werden soll, welche URL aufgerufen werden soll usw...
 

Neue Themen


Zurück
Oben