Avatar billede ingenting Nybegynder
04. april 2001 - 18:41 Der er 4 kommentarer og
1 løsning

Link Checker

Jeg har et script på mange filer, som samler links fra andre sider og poster dem på min side, men jeg kunne godt tænke mig at vide, hvordan jeg får scriptet til at tjekke hvert enkelt link for at se om de virker.

Altså at der ikke er fejl 403 osv. Kun dem med 200 som jo virker kommer på ens side.

Nogle der kan hjælpe?

Avatar billede jespernaur Nybegynder
04. april 2001 - 18:58 #1
For mig at se skulle der være gode chancer, hvis du bruger CPAN-modulerne LWP::UserAgent og HTTP::Request. Det burde kunne lade sig gøre at rent faktisk åbne hver enkelt link, og enten få fejl, eller det rent faktiske indhold af siden (som man kan vælge at smide væk).
Avatar billede jespernaur Nybegynder
04. april 2001 - 19:37 #2
Her er noget kode:

use strict;

sub testlink
{
  my $link = shift(@_);

  use HTTP::Request;
  use LWP::UserAgent;


  my $ua;
  my $request;
  my $response;

  print \"\\$link = $link\\n\";

  print \"test 0\\n\";
  $ua = new LWP::UserAgent;
  print \"test 1\\n\";
  $request = new HTTP::Request(\'GET\', $link);
  print \"test 2\\n\";
  $response = $ua->request($request);
  print \"test 3\\n\";

  return $response->is_success;
}

if (testlink( \'http://localhost/version2/indexxx.html\' )) {
  print \"OK\\n\";
}
else {
  print \"not OK\\n\";
}

if (testlink( \'http://localhost/version2/index.html\' )) {
  print \"OK\\n\";
}
else {
  print \"not OK\\n\";
}

Det er en subroutine testlink, som kaldes med linken som parameter og returnerer \'true\' eller \'false\' afhængig af om linken virker eller ej. Bemærk, at den faktisk accesser linken, så hvis du har rigtig mange, er det måske ikke noget, du gider at gøre hver eneste gang.

Mvh
Jesper Naur
Avatar billede jespernaur Nybegynder
04. april 2001 - 19:39 #3
Du vil sikkert vælge at smide mine testudskrifter ud!
Avatar billede jespernaur Nybegynder
04. april 2001 - 20:01 #4
Hvis du skriver

  $request = new HTTP::Request(\'HEAD\', $link);

i stedet for

  $request = new HTTP::Request(\'GET\', $link);

vil den kun hente headeren af HTTP-siden, det må virke hurtigere.
Avatar billede ingenting Nybegynder
06. april 2001 - 10:17 #5
Her er de 100 point til Jesper, da han kom med en brugbar løsning til mit problem!!
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

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior projektkonsulent til program Digital og Operativ Transformation

Kræftens Bekæmpelse

IT-driftsleder