Seite 1 von 1

Schnelle Datenverarbeitung (Webcrawler)

Verfasst: Montag 16. Januar 2012, 16:53
von Jonso
Hallo,
ich bin derzeit dabei einen Webcrawler in Python zu schreiben.
Das Grundgerüst ist fertig und ich gehe langsam zur optimierung über.
Leider weiß ich nicht, wie ich die Daten am besten sammeln sollte.
Zu speichern sind die besuchten und gefundenen, aber noch nicht
besuchten urls. Das Problem ist, das die Menge der abzugleichenden
Daten ständig wächst.

Deshalb bin ich auf der Suche nach der
effizientesten Methode Daten miteinander zu vergleichen, um
die selbe seite nicht zweimal aufzurufen und der, mit der ich
Daten schnellstmöglich speichern und wieder abrufen kann.
Das heißt, dass ich keine weiteren Funktionen, bis auf die oben
genannten bräuchte, bis auf das der typ in dem die Daten
die ich speichern und wieder abrufen möchte iterierbar sein sollte.

Ich habe mal gelesen, dass dictionarys relativ schnell sein sollen.
Gilt das nur, wenn ich ein Key/Value Paar suche, oder auch wenn
ich nur mehrere Keys habe?
Ansonsten habe ich noch darüber nachgedacht, ein set-, deque-
oder iteratorobjekt zu benutzen.
In dem Objekt müssen ausschließlich urls als string gespeichert werden.

Würde mich sehr über Tipps freuen,
Jonso

Re: Schnelle Datenverarbeitung (Webcrawler)

Verfasst: Montag 16. Januar 2012, 17:02
von Hyperion
Eine URL ist ja per definitionem eindeutig - das ist ja geradezu prädestiniert als Schlüssel für ein Dictionary ;-)

Eine bessere Zugriffszeit als bei einem Dictionary kannst Du nicht erreichen, da diese O(1) ist.

Da Du das alles aber vermutlich nicht im Speicher halten willst, könntest Du ja mal einen KV-Store a la Reddis in Betracht ziehen.

Re: Schnelle Datenverarbeitung (Webcrawler)

Verfasst: Dienstag 17. Januar 2012, 03:20
von Leonidas
Hyperion hat geschrieben:Eine URL ist ja per definitionem eindeutig - das ist ja geradezu prädestiniert als Schlüssel für ein Dictionary ;-)
In der Realität eher weniger:
Können durchaus alle auf den gleichen Inhalt verweisen und das ist jetzt auch nicht sonderlich unüblich.

Re: Schnelle Datenverarbeitung (Webcrawler)

Verfasst: Dienstag 17. Januar 2012, 09:31
von lunar
@Leonidas: Ja und? Im Regelfall verweist ja nur eine URL direkt auf die Inhalte, während der Rest lediglich weiterleitet. Und diese Weiterleitungen kann der Crawler ja erkennen.

Re: Schnelle Datenverarbeitung (Webcrawler)

Verfasst: Dienstag 17. Januar 2012, 09:51
von /me
Leonidas hat geschrieben:Können durchaus alle auf den gleichen Inhalt verweisen und das ist jetzt auch nicht sonderlich unüblich.
Das ist aber dann ein Problem des Seitenbetreibers. Im Endeffekt zersplittert damit der Wert einer Seite für Suchmaschinen. Wenn man sich als Webmaster so etwas aufgebaut hat, dann sollte man ganz stark über ein permanentes Redirect auf eine kanonische Seite nachdenken.

Dem Abrufer bleibt gar nichts anderes übrig, als diese Seiten individuell zu betrachten.