lees enkele variabelen uit een directory - om ze te ontleden met mechaniseren

Ik heb een lijst met 2500 websites en moet een thumbnail-schermafbeelding van ze maken. Hoe doe ik dat? Ik zou kunnen proberen de sites te parsen met Perl Mechanize - bijvoorbeeld zoals deze.

  use WWW::Mechanize::Firefox;
  my $mech = WWW::Mechanize::Firefox->new();
  $mech->get('http://google.com');

  my $png = $mech->content_as_png();

Hoe doe ik dit voor alle verschillende URL's? Hoe lees ik ze uit een bestand? Met andere woorden ik bewaar de URL's in een bestand. En daarna heb ik de resultaten in een andere map geplaatst.

Van de documenten:

Retourneert het opgegeven tabblad of de huidige pagina die wordt weergegeven als PNG-afbeelding. Allemaal   parameters zijn optioneel. $ tab is standaard ingesteld op het huidige tabblad. Als het   coördinaten worden gegeven, die rechthoek wordt uitgesneden. De coördinaten   moet een hash zijn met de vier gebruikelijke vermeldingen,   links, boven, breedte, hoogte. Dit is specifiek voor WWW :: Mechanize :: Firefox.

0
Oorspronkelijk antwoord geleverd door SO gebruiker gangabass .
toegevoegd de auteur daxim, de bron

2 antwoord

Ik denk dat ik begrijp ... dat je een lijst wilt hebben van 2.500 URL's, één op elke regel, opgeslagen in een bestand. Wilt u dat uw script hierboven het bestand opent, een regel leest en de website ophaalt? Zo ja, zoiets als dit:

    Filename: urls.txt
    ------------------
    www.google.com
    www.cnn.com
    www.msnbc.com
    news.bbc.co.uk
    www.bing.com
    www.yahoo.com

Dan de code:

    use WWW::Mechanize::Firefox;
    my $mech = WWW::Mechanize::Firefox->new();

    open(INPUT, "urls.txt") or die "Can't open file: $!";

    while (<input>) {
      chomp;
      $mech->get($_);
      my $png = $mech->content_as_png();
    }
    close(INPUT);
    exit;
2
toegevoegd
hallo torgis hallo samold - heel veel dank voor het geweldige antwoord. ik test dit. Zeker met goede resultaten!
toegevoegd de auteur zero, de bron
Dat zou inderdaad goed zijn. Het hoeft maar één keer te worden geïnstantieerd. Ik zal mijn antwoord updaten.
toegevoegd de auteur AWT, de bron
Kan de bewerking -> nieuw() worden weggehaald uit de while() lus? Zou dat de prestaties van het script verbeteren?
toegevoegd de auteur sarnold, de bron

Ervan uitgaande dat uw lijst in een bestand met de naam list.txt staat:

open( my $fh, '<', 'list.txt') or die "Could not open list.txt: $!";
foreach my $url ( <$fh> ) {
    chomp $url;
    # Do your mechanize thing here using $url
}
close $fh;

Kortom, open het bestand en loop vervolgens door alle regels in het bestand.

1
toegevoegd
hallo daar - heel veel dank voor het geweldige antwoord !! Overweldigend! dankjewel. groeten.
toegevoegd de auteur zero, de bron