Projekt...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Hallo,

ich habe mir irgendwie in den Kopf gesetzt, so eine Art Webcrawler zu basteln, der alle URLs mit IP des WWW in einer Datenbank speichern soll (ich weiß, dass das ein fast unmögliches Projekt ist..., aber versuchen kann man es ja...). Nun habe ich etwas überlegt, wie ich das am "performantesten" anstellen könnte. Hier die Grafik. Ich will das ganze in drei Große Einheiten Gliedern: Parser, Downloader, Verwalter. Alle arbeiten parallel. Wobei der "Verwalter" die Hauptaufgabe bekommen soll und in gewisser Weise "intelligent" URLs in einemm Cache behält und wenn diese nicht zu großer Wahrscheinlichkeit nicht mehr benutzt werden, in den dauerhaften Speicher - die Datenbank - ablegt... Er sollte auch steuern, wenn ein Thread zB hinterhängt, dass er mit mehr Power gefüllt wird... (Mehr worker).

Nunja, das grobe Konzept ist schon in meinem Kopf. Nun habe ich aber leider keine Ahnung wo und wie ich anfangen soll. Vor allem habe ich absolut keine Ahnung davon, wie ich die einzelnen "Threads" gestalten soll und wie diese am besten miteinander kommunizieren. Ich wäre mit ein paar Stichworten und Ideen zufrieden und müsste mich halt einlesen. Außerdem bin ich über Kritik an dem Konzept/der Idee auch sehr froh...

Was will ich damit? Als erstes mal eine riesen Menge an Daten, die man dann evtl. in eine Internet-Karte umsetzen könnte oder sonstiges... Ich weiß es eben nicht genau und es war eine fixe Idee, die mir nicht mehr aus dem Kopf geht... Nun hoffe ich auf ein paar Tipps von euch, die mir den Einstieg etwas erleichtern.

Danke!
MfG
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie wärs damit:

Code: Alles auswählen

wget -R www.google.com
;-)

Ok, es geht Dir nur um eine Map von IPs und Webseiten... dennoch: Die Datenmenge explodiert doch verdammt schnell. K.A. wie man das effizient lösen kann. Einfach stumpf jedem Link nachgehen dürfte da keine (gute) Lösung sein. (Und dann muss man noch klären, ob man Tiefensuche oder Breitensuche bevorzugt)

Ich denke es ist vor allem erst mal ein Problem der Datenstruktur (naja und eigentlich auch der Hardware dahinter ... schätze google hat da ein wenig mehr Plattenplatz als Du :-D )

Wieso fängst Du nicht mal mit einem Simpel-Script an und guckst dann einfach, wie schnell das alles so wächst?
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

ja, mir war schon klar, dass ich mit meiner Hardware und der Anbindung zu Hause nicht ganz an Google rankomme...;)
Danke für deinen Tipp, dann werde ich erstmal ein einfaches Skript basteln und zusehen wie meine 500GB vollaufen...^^

MfG und Danke!
BlackJack

@Hyperion: Wenn man damit so etwas wie "Karten" erstellen können möchte, dann würde ich bei der Grösse vom Netz Breitensuche anwenden. Da bekommt man wenigstens einen kleinen lokalen Ausschnitt vom Netz als "Karte" und keinen Pfad der sich irgendwo durch die Weiten des Netzes schlängelt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:Ok, es geht Dir nur um eine Map von IPs und Webseiten... dennoch: Die Datenmenge explodiert doch verdammt schnell. K.A. wie man das effizient lösen kann. Einfach stumpf jedem Link nachgehen dürfte da keine (gute) Lösung sein.
Das Problem ist auch dass du eine Quasi unlimitierte anzahl von Hostnamen und URLs findest, die sich dann duplizieren.

Im Crawler selbst sehe ich kein so großes Problem bei der Implementierung, man hat eben einen Threadpool von Parser-Threads (worker), die die Seiten durchsehen und Links extrahieren, dann hast du einen Thread der die Sachen downloadet und die Dateien dem Threadpool verfügbar macht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten