Avatar billede sis Nybegynder
08. august 2000 - 22:39 Der er 7 kommentarer og
1 løsning

chekke for broken links?

hejsa!

jeg vil til at lave en funktion, således at en surfer kan taste sin URL ind i en form, og så chekker perlscriptet siden for broken links!
Ligsom linkbot kan gøre det.

Jeg er bare ikke helt sikker på hvordan det kan gøres, jeg har set en funktion som hedder noget med

USE::SIMPLE
get($url);

for at hente siden in i en variabel, men det er ikke alle steder den virker (eller er det bare mig?)

Hvad gør jeg så når jeg har fået hentet siden ind, jeg skal jo have en liste trukket ud med alle de links som er på siden?
Og jeg skal jo også se om linket virker, kan man lave en slags request på den side, og få en file-header tilbage, som f.eks \"404\",\"500\" ell.lign?

Håber nogen kan hjælpe mig med dette, da jeg også laver det for ar blive en \"haj\" til perl! :o)

Med venlig Hilse
Simon
Avatar billede erikjacobsen Ekspert
08. august 2000 - 23:07 #1
Jeg vil meget gerne henvise dig til nogen, der allerede har gjort det. Jeg ved godt
at det ikke er så smart hvis du vil være en \"haj\", for så er det bedre at lave det fra
grunden. Men mon ikke du kan lære lidt ved at kigge på scriptsene i:
http://www.hotscripts.com/Perl/Scripts_and_Programs/Link_Checking/
Avatar billede sis Nybegynder
09. august 2000 - 16:14 #2
hmmm ok, nu har jeg prøvet nogle af dem jeg har prøvet!
Men Dem je ghar prøvet, kan ikke chekke om URL med kodeord i virker, f.eks:
www.eksperten.dk/spm/22632" target="_blank">http://user:name@www.eksperten.dk/spm/22632
det jeg fandt brugte noget med \"head($attr_value)\"?

Med venlig hilsen
Simon
Avatar billede erikjacobsen Ekspert
09. august 2000 - 21:48 #3
Det har du givetvis ret i.... Der kræver jo at man bruger en del af HTTP-protokollen,
som handler om overførsel af passwords, og at man iøvrigt fanger URL-en rigitg, med
den der @ i. Det sidste er nemt at rette i et skript, men det første ... tjah ....  hvor
vigtigt er det?
Avatar billede sis Nybegynder
10. august 2000 - 15:10 #4

well det er en stor del af det!
jeg har hørt om andre scripts som kan gøre det, så det må vel kunne lade sig gøre på en eller anden lumsk måde?

Avatar billede erikjacobsen Ekspert
10. august 2000 - 15:15 #5
Ja, ja, det kan lade sig gøre. Et Perl-program kan sagtens simulere hele HTTP-protokollen.
Nu nævner du navn:pass i forbindelse med eksperten.dk - kan man det?

Hvad med om du fandt et nogenlunde fornuftigt script, som kan alt det andet, og så må
vi (eller andre) kigge på om det kan udvides?
Avatar billede sis Nybegynder
10. august 2000 - 21:30 #6
ja jeg ka da godt prøve at finde et men jeg har

ik fundet noget godt endnu.
Som nævnt før havde jeg fundet et, men jeg har stadig ik fattet helt hvad alle de kommandoer gør, jeg kan prøve at finde det frem, så ka i måske også forklare lidt om hvad de forskellige ting gør?

Avatar billede sis Nybegynder
10. august 2000 - 21:43 #7
ok, her er noget jeg har fundet:
(jeg har klippet det ud, det hele er ik med, men det \"vigtigste\")

sub check_links {

  use HTML::LinkExtor;
  use LWP::Simple qw(get head);

  # get url from form and retrieve
  $base_url = $FORM{\'url\'};
  $parser = HTML::LinkExtor->new(undef, $base_url);
  $parser->parse(get($base_url));
  @links = $parser->links;


  # Loop through links and check validity
  foreach $linkarray (@links) {
    my @element  = @$linkarray;
    my $elt_type = shift @element;
    while (@element) {
        my ($attr_name , $attr_value) = splice(@element, 0, 2);
        if ($attr_value->scheme =~ /\\b(ftp|https?|file)\\b/) {
        print \"<a href=\\\" $attr_value \\\" target=\\\"\\_blank\\\">\\n\";
            print \"  $attr_value: <\\/a><b>\", head($attr_value) ? \"OK\" : \"BAD\", \"<\\/b><br>\\n\";
        }
    }
  }
}

Avatar billede sis Nybegynder
20. oktober 2000 - 11:54 #8
nevermind...
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