Ein WebSpider Modul

Grundgerüst eine webspiders

Download:web_spider.zip

folgene Optionen für "new" sind bekannt:

  • lwp_opts
    hashref die an LWP::UserAgent übergeben wird
  • user_agent
    setzen des UserAgent mit dem sich der Spider am Server identifiziert
  • connection_timeout
    Wartezeit bis zum verbiundungsabbruch (default: 30 Sekunden)
  • max_file_size
    maximale dateigröße die heruntergelden wird (default: 250000 byte)
  • cookie_file
    Datei in der die Cookies gespeichert werden (default: ./cookies.txt)
  • sleep
    wartezeit zwischen zwei zugriffen
  • sleep_random
    es wird zusätzlich deine zufällige Zeit zwischen 0 und der zahl gewartet
  • url_adding_max
    mittels "add_again_url" kann man eine schon besuchte url wieder hinzufügen ein wert >0 verhindert das die selbe URL mehr als dieser wert erneut hinzugefügt werden kann das soll endlose rekursioen bei einer fehlerhaften seit verhindern
    Der Defautwert ist 1
  • head_code
    wird ausgeführt nachdem der Heder gelesen wurde. Wird 0 (false) zurück geliefert stoppt der Download, bei 1 (true) wird er fortgeführt übergeben wird das web::spider Objeckt und ein HTTP::Headers Objeckt
  • body_code
    wird ausgeführt nachdem der download beendet wurde ist der rückgabewert "false" dann wird das spidern beendet. Übergeben wird das web::spider Objeckt und ein HTTP::Response Objeckt
  • body_stream_code
    wird während des downloads ausgeführt nachdem ein Chunk ein "Dateibrocken" geladen wurde wird es ausgeführt. Der download wird abgebrochen wenn der rückgabe wert "false" ist übergeben wird das web::spider Objeckt und ein HTTP::Response Objeckt und die gerade geladenen Daten.

die Idee ist es dass der Spider einem soviel arbeit wie möglich abnimmt, aber einem noch die nötige Flexibilität lässt, um den Spider so zu gestalten wie man es sich wünscht.

wichtige metoden:

  • has_next()
    gibt "true" zurück wenn noch urls geladen werden können
  • check_url($url)
    übergeben wird ein web::URL objekt oder ein urlstring gibt true zurück wenn die URL noch nicht geladen wurde
  • get_deep_now()
    bei jeder weitern seite die besucht wird wird dieser wert zur vorherigen um eins erhöht. Damit kann man die augenblickliche rekusrionstiefe feststellen
  • get_seen_list()
    liste aller besuchten Seiten
  • get_seen_list()
    liste aler seiten, die noch besucht werden sollen
  • set_head_action($code)
    siehe "head_code"
  • set_body_action($code)
    siehe "body_code"
  • set_body_stream_action($code)
    siehe "body action_code"
  • add_seen_url($url)
    fügt eine url der "seen" Liste hinzu
  • add_url($url)
    fügt eine url der "next" Liste hinzu
  • add_again_url($url)
    fügt eine schonmal besuchte UL der "next" Liste hinzu. Das funktioniert aber nur so häufig wie es in url_adding_max festgelegt wurde
  • set_user_agent($name)
    siehe "user_agent"
  • set_proxy ($url [, $protocoll ])
    einen proxy setzen
  • runn
    den Spider starten