Sab Abr 15, 2006 6:13 pm
|
 |
Julioc86
Perlero Nuevo

|
Registrado: 15 Abr 2006
Mensajes: 1
|
|
| Obtener de un documento HTML las etiquetas <a> |
|
|
| Hola necesito obtener de un documento html un arreglo de las etiquetas <a href="...">cualquier cosa</a> lo he intentando con expresiones regulares pero no ha funcionado, necesito obtener todas las direcciones que tiene la web, ¿alguien tiene una idea? |
|
|
|
Sab Abr 15, 2006 10:34 pm
|
 |
g013m
Perlero Nuevo

|
Registrado: 15 Jul 2005
Mensajes: 15
|
|
|
|

Dom Abr 16, 2006 7:25 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
Un ejemplo con HTML::LinkExtor:
| Código: |
#!/usr/bin/perl -l
use LWP::Simple;
use HTML::LinkExtor;
## Leemos el documento HTML
$doc = get("http://perlenespanol.baboonsoftware.com/foro/index.php");
## Extraemos los enlaces que hay dentro
$extractor = HTML::LinkExtor->new;
$extractor->parse($doc);
## Pintado de sólo los enlaces con marca 'a' y con atributo 'href'
foreach $enlace ( $extractor->links ) {
($tag,%links) = @{$enlace};
next unless $tag eq "a";
print $links{href} if defined $links{href};
} |
HTML::LinkExtractor permite extraer más información (como el texto del enlace).
Con expresiones regulares, se puede intentar con algo sencillo:
| Código: |
#!/usr/bin/perl -l
$doc = do{ local $/; open F,"index.html"; <F>};
while( $doc =~ /<\s*a.*?href="(.+?)"/sig) {
print $1;
} |
Otro ejemplo en este mismo foro.
Ultima edición por explorer el Dom Abr 16, 2006 10:03 am, editado 1 vez |
|

Dom Abr 16, 2006 9:51 am
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 478
Ubicación: Frente al monitor
|
|
|
|
|
O puedes hacer algo como esto:
| Código: |
my $html = "<a href="http://perlenespanol.baboonsoftware.com"</a>";
my @todo = split / /, $html;
foreach my $palabra (@todo){
if($palabra =~ /^href=(.*)$/){
$palabra =~ s/href="//g;
$palabra =~ s/"//g;
$palabra =~ s/\<(a|A)\/\>//g;
print "Link => ", $palabra, "\n";
}
}
|
O algo asi. |
|
Dom Abr 16, 2006 6:04 pm
|
 |
Perl user
Maestro Honorario

|
Registrado: 03 Nov 2004
Mensajes: 385
|
|
|
|
|
Las respuestas donde te pusieron una expresión regular directamente no es mala, pero es la peor solución, para hacer el parsing de una URL/URI con una expresión regular no es TAN sencillo y requiere de mas trabajo que el que te pusieron.
Recomiendo aparte del uso de HTML::LinkExtor como ya te mencionaron, el uso de WWW::Mechanize, el cual solo te costará invocar un sólo método, checa la documentación.
Best regards, |
|
Powered by phpBB © 2001, 2005 phpBB Group
|