Leser: 1
4 Einträge, 1 Seite |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#!/usr/bin/perl use strict; use warnings; use Benchmark::Forking qw( timethis timethese cmpthese ); use Web::Scraper; $| = 1; $\ = "\n"; # hier fehlt der HTML-Code von einem Google-Suchergebniss, # den ich entfernen musste, weil er über 25000 Zeichen lang war # pro Post sind ja nur maximal 10000 Zeichen erlaubt # (" und @ muss im HTML-Code entsprechend ersetzt werden) my $resp_body = ""; timethese(1000, { 'Regex' => sub { my @URLs = $resp_body =~ /<h2 class=r><a href="(.*?)" class=l>/g; }, 'WebScraper - css' => sub { my $google = scraper{ process 'a.l' => 'Links[]' => '@href' }; my $res = $google->scrape( \$resp_body ); }, 'WebScraper - XPath' => sub { my $google = scraper{ process '//a[@class="l"]' => 'Links[]' => '@href' }; my $res = $google->scrape( \$resp_body ); }, });
renee+2008-04-29 16:30:00--Reguläre Ausdrücke sind mit Sicherheit schneller, dafür hast Du unter Umständen einen Wartungsintensiven Code. Was wenn Google aus class=l mal class="l" macht? Dann läuft mit Regex erstmal nix, mit Web::Scraper bist Du da auf der sicheren Seite.
renee+2008-04-29 16:30:00--Außerdem würde es sicherlich einen Geschwindigkeitsvorteil bringen, wenn Du einmal das Scraper-Objekt erzeugst und dann nur noch die scrape-Methode aufrufst - und nicht für jede Seite ein neues Objekt erzeugst.
4 Einträge, 1 Seite |