7 Stimmen

Wie kann ich mit Perl scrapen?

Ich muss einige Werte anzeigen, die in einer Website gespeichert sind, dafür muss ich die Website scrapen und den Inhalt aus der Tabelle abrufen. Irgendwelche Ideen?

6voto

Paolo Bergantino Punkte 465120

Wenn Sie mit jQuery vertraut sind, sollten Sie sich die folgenden Seiten ansehen pQuery was dies sehr einfach macht:

## print every <h2> tag in page
use pQuery;

pQuery("http://google.com/search?q=pquery")
    ->find("h2")
    ->each(sub {
        my $i = shift;
        print $i + 1, ") ", pQuery($_)->text, "\n";
    });

Außerdem gibt es HTML::DOM .

Was auch immer Sie tun, verwenden Sie dafür keine regulären Ausdrücke.

4voto

weismat Punkte 6931

Ich habe verwendet HTML-Tabellenauszug in der Vergangenheit. Ich persönlich finde es etwas schwerfällig in der Anwendung, aber vielleicht habe ich das Objektmodell nicht gut verstanden. Normalerweise verwende ich diesen Teil des Handbuchs, um die Daten zu untersuchen:

 use HTML::TableExtract;
 $te = HTML::TableExtract->new();
 $te->parse($html_string);

     # Examine all matching tables
     foreach $ts ($te->tables) {
       print "Table (", join(',', $ts->coords), "):\n";
       foreach $row ($ts->rows) {
          print join(',', @$row), "\n";
       }
     }`

0 Stimmen

HTML::TableExtract ist ziemlich magisch. Eine großartige Funktion ist die Möglichkeit, Tabellen durch Angabe des Inhalts von Kopfzellen auszuwählen und nur die Spalten zu behalten, an denen Sie interessiert sind.

3voto

Dave Sherohman Punkte 44017

Obwohl ich dies im Allgemeinen mit LWP / LWP::Einfach ist das derzeit "bevorzugte" Modul für jede Art von Webpage Scraping in Perl WWW::Mechanisieren .

0 Stimmen

David: Können Sie das näher erläutern. Ich dachte immer, WWW::Mechanize sei eher für automatisierte Tests gedacht. Was hebt es von anderen ab?

0 Stimmen

WWW::Mechanize ist für jede Art der Interaktion mit einer Website gedacht. Es war nie nur für automatisierte Tests gedacht.

0 Stimmen

Allerdings kann Test::WWW::Mechanize でございます die nur auf automatisierte Tests abzielen. Es ist ein Wrapper um WWW::Mechanize.

2voto

mirod Punkte 15573

Wenn Sie mit XPath vertraut sind, können Sie auch HTML::TreeBuilder::XPath . Und wenn Sie es nicht sind... dann sollten Sie es sein ;--)

2voto

draegtun Punkte 22205

Ähnliche Stackoverflow-Fragen finden Sie unter....

Ich verwende gerne pQuery für Dinge wie diese jedoch Web::Scraper sieht sehr interessant aus.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X