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
Schnelle Datenverarbeitung (Webcrawler)
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.
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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
In der Realität eher weniger:Hyperion hat geschrieben:Eine URL ist ja per definitionem eindeutig - das ist ja geradezu prädestiniert als Schlüssel für ein Dictionary
Können durchaus alle auf den gleichen Inhalt verweisen und das ist jetzt auch nicht sonderlich unüblich.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@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.
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.Leonidas hat geschrieben:Können durchaus alle auf den gleichen Inhalt verweisen und das ist jetzt auch nicht sonderlich unüblich.
Dem Abrufer bleibt gar nichts anderes übrig, als diese Seiten individuell zu betrachten.