2009-05-27 2 views
0

Ich habe eine Eingabe mit einem Link und ich möchte diesen Link öffnen. Zum Beispiel habe ich eine HTML-Datei und möchte alle Links in der Datei finden und ihre Inhalte in einer Excel-Tabelle öffnen.Wie kann ich Links aus einer HTML-Datei mit Perl extrahieren?

+0

Warum oh warum muss jeder deiner Posts so formatiert sein? Warum? – innaM

+1

Fragen Sie, wie Sie eine Liste von Links aus einer HTML-Datei erhalten? Oder fragst du, wie man den Links folgt? Oder fragen Sie, wie Sie etwas in eine Excel-Tabelle bekommen? – innaM

+0

Die Art, wie ich es lese, möchte er Daten von Seiten, die von einer bestimmten Seite verknüpft sind, schaben und die Ergebnisse in Excel-Dokumente einfügen. –

Antwort

1

Das klingt wie ein Job für WWW::Mechanize. Es bietet eine ziemlich hohe Schnittstelle zum Abrufen und Studieren von Webseiten.

Sobald Sie die Dokumente gelesen haben, werden Sie eine gute Idee haben, wie Sie vorgehen.

+0

WWW verwenden :: Mechanisieren; mein $ mech = WWW :: Mechanize-> neu (autocheck => 1); $ mech-> get ("http://www.google.com"); drucken $ mech-> Inhalt; LERNEN ERROR Fehler Geting http://www.google.com: Kann nicht an www.google.com:80 verbinden (connect: Unbekannter Fehler) Ich will wissen, was falsch ist. – User1611

+0

google.com ist etwas Besonderes. Es mag keine Roboter. Es klingt jedoch wie ein Netzwerkproblem, wenn Sie nicht einmal verbinden können. –

5

Es klingt wie Sie das Linktractor-Skript von meinem HTML::SimpleLinkExtor-Modul wollen. Sie können außerdem Interesse an meinem webreaper Skript haben. Ich habe das vor langer, langer Zeit geschrieben, um etwas in der Nähe dieser Aufgabe zu tun. Ich empfehle es nicht wirklich, weil andere Tools jetzt viel besser sind, aber Sie können zumindest den Code anschauen.

CPAN und Google sind Ihre Freunde. :)

Mojo::UserAgent ist für diese ganz nett, auch:

use Mojo::UserAgent 

print Mojo::UserAgent 
    ->new 
    ->get($ARGV[0]) 
    ->res 
    ->dom->find("a") 
    ->map(attr => "href") 
    ->join("\n"); 
1

Es ist auch Web::Query:

#!/usr/bin/env perl 

use 5.10.0; 

use strict; 
use warnings; 

use Web::Query; 

say for wq(shift)->find('a')->attr('href'); 

Oder von der cli:

$ perl -MWeb::Query -E'say for wq(shift)->find("a")->attr("href")' \ 
     http://techblog.babyl.ca 
0

Ich habe verwendet URI::Find für diese in der Vergangenheit (für, wenn die Datei nicht HTML ist).

Verwandte Themen