Avatar billede sushiboy Nybegynder
03. maj 2006 - 15:38 Der er 1 kommentar

Parsing af bestemte dele af en HTML-side.

Hej med jer.

Jeg er påbegyndt at lære om Perl og hvorledes man parser dele af en HTML-fil. Specifikt omhandler det én af mine gamle sider (http://home.tiscali.dk/taiwan/myworld.html), hvor jeg ønsker at smide linksene (<a href="www.link.com">), samt den associerende tekst (.com">associerende tekst</a>) ind i to felter i en database, ergo skal de øvrige HTML-tags fjernes.

Jeg har fundet ud af at forbinde til MySQL med Perl, og eksperimenteret lidt med HTML::Parser, men er stadig i tvivl om hvordan man griber situationen an.

Jeg har bemærket at en så simpel kode som nedenstående returnerer dele af HTML-tags og den associerende tekst.

sub text {
  my ($self, $text) = @_;
  print "$text\n";
}

Det samme vil nedenstående kode gøre. Derfor undrer jeg mig over, hvordan man får fat på <a href="">, når ingen af de to returnerer den del af HTML-koden.

sub start {
  my ($self, $start) = @_;
  print "$start\n";
}

Desuden har jeg i et online-eksempel set at start kan modtage en hel del parametre:

my ($self, $tag, $attr, $attrseq, $origtext) = @_;

Er det via $tag som man kan bruge til at finde 'a href'? Eller sagt på en anden måde: Hvordan skal Perl-scriptet være opbygget for at jeg kan opnå mit mål?
Avatar billede ranko Nybegynder
11. juni 2006 - 20:26 #1
Du kan også gøre det via HTML::Treebuilder hvis du har adgang til det modul.
extract_links (og eksemplet) findes beskrevet i HTML::Element dokumentationen

  use HTML::TreeBuilder;
  $root = HTML::TreeBuilder->new_from_content("some content...");
  for (@{$root->extract_links('a')  }) {
    my($link, $element, $attr, $tag) = @$_;
    print $link," ",$element->as_text(), "\n";
  }
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