Avatar billede Slettet bruger
17. september 2002 - 15:15 Der er 15 kommentarer og
1 løsning

wget i perl

Jeg søger et komplet eksempel (kun et par linjers kode) på hvordan man kan "fetche" hjemmesider med et perl script og wget.
Avatar billede thomasledet Nybegynder
17. september 2002 - 16:35 #1
her er lidt at starte på... bemærk at det er livsfarligt bare at passe hvad som helst til din shell... du bør undersøge $url for mystiske tegn, der kan bruges til at afvikle noget som helst på din maskine... scriptet er forøvrigt ikke testet...

#!/usr/bin/perl

$url = 'http://www.hest.gnu';

open(URL,"wget \"$url\"") or die("Failed running wget: $!\n");
while(<URL>) {
print $_;
}
close(URL);
Avatar billede breum Nybegynder
17. september 2002 - 16:36 #2
$url="http://www.breum.dk";
$targetfile ="/hotel/software/slettemp/testfil.txt";
$wgetlocation = "/usr/bin/wget";

$wgetoptions = '-q -O';

system "$wgetlocation -q -O $savefilename $url";

open (file ,"$savefilename");

@indhold = <file>;

close (file);

print @indhold;
Avatar billede thomasledet Nybegynder
17. september 2002 - 16:37 #3
en anden og lidt mere sikker måde at gøre det på er ved at droppe brugen af wget:

#!/usr/bin/perl

use LWP::Simple;
unless(defined($content = get($url))) {
die("Could not get $url");
}

print $content;
Avatar billede breum Nybegynder
17. september 2002 - 16:37 #4
hehehe 1 min 5 sek
Avatar billede Slettet bruger
17. september 2002 - 16:50 #5
Ja, jeg skal love for at der kom svar der :) breum, jeg vil gerne belønne dit svar også.

Mht. lwp, så har jeg før brugt dette, men det brugte rigtig mange system resourcer... især hvis hjemmesiden, som skulle hentes, var langsom eller nede.
Avatar billede breum Nybegynder
17. september 2002 - 17:25 #6
Du behøver ikke give mig points - giv dem til Thomas
Avatar billede Slettet bruger
17. september 2002 - 18:39 #7
Lige endnu et spørgsmål... er der en måde hvorpå al data kan gemmes direkte i en variabel i stedet for en fil med:

system "$wgetlocation -q -O $savefilename $url";
Avatar billede breum Nybegynder
17. september 2002 - 20:11 #8
Det må vel være en mellemting af min og Thomas' løsning
Avatar billede breum Nybegynder
17. september 2002 - 20:13 #9
#!/usr/bin/perl

$url="http://www.breum.dk";
$wgetlocation = "/usr/bin/wget";

open(URL,"$wgetlocation $url") or die("Failed running wget: $!\n");
@indhold = <URL> ;

close(URL);

print @indhold;
Avatar billede breum Nybegynder
17. september 2002 - 20:13 #10
ovenstående er ikke testet
Avatar billede Slettet bruger
17. september 2002 - 20:16 #11
Jeg kunne ikke få Thomas' løsning til at virke... men nm - har fundet anden løsning :)
Avatar billede breum Nybegynder
17. september 2002 - 20:23 #12
det skulle have været
open(URL,"|$wgetlocation $url") or die("Failed running wget: $!\n");
men det virker heller ikke - den insisterer på at save filen
Avatar billede breum Nybegynder
17. september 2002 - 20:25 #13
Lad høre, hvilken løsning fandt du?
Avatar billede Slettet bruger
17. september 2002 - 20:59 #14
Jeg fandt ikke en løsning til at gemme data i en variabel - fandt blot et system jeg bruger metoden med filer.
Avatar billede breum Nybegynder
17. september 2002 - 21:31 #15
Så kan det da vist ikke være hurtigere end use LWP::Simple;
Avatar billede Slettet bruger
17. september 2002 - 21:33 #16
Mht. systemresourcer er det... LWP overbelastede serveren blot ved 2 scripts, som arbejdede på samme tid.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester