2009-11-25 3 views
0

Je veux extraire tous les liens d'une page. J'utilise HTML:LinkExtor. Comment puis-je extraire tous les liens pointant vers des pages de contenu HTML uniquement?Comment extraire des liens dans JavaScript qui pointent vers des pages HTML en Perl?

Je ne peux pas non extraire ces types de liens:

javascript:openpopup('http://www.admissions.college.harvard.edu/financial_aid/index.html'), 

EDIT: pages HTML - text/html. Je n'indexe pas les images, etc.

+2

Qu'est-ce que c'est "Pages de contenu HTML uniquement"? En d'autres termes: quels types de liens ne voulez-vous pas extraire? – innaM

Répondre

2

Oui, HTML :: LinkExtor ne comprend pas le javascript. En fait, il est peu probable que vous obtiendrez quoi que ce soit qui reconnaît les URL intégrées dans javascript, tout simplement parce que cela nécessiterait généralement l'exécution de code réel.

1

Perl va avoir beaucoup de façons de le faire grâce à la force brute. Vous pouvez utiliser l'analyseur Push/Pull pour passer d'une balise à l'autre. Vous pourriez être en mesure de juste slurp la page entière et l'utiliser pour les liens, ou pour les liens dans JavaScript. Avez-vous regardé WWW::Mechanize::Plugin::JavaScript? Le module WWW::Mechanize est un meilleur ami de Botting Web (pas que vous essayez de bot). J'ai déjà utilisé ce module et je peux dire que c'est l'un des meilleurs modules Perl sur CPAN.

Voici un exemple de CPAN: Définit la variable nommée à la valeur donnée

$m->plugin('JavaScript')->set(
     'document', 'location', 'href' => 'http://www.perl.org/'); 
+0

C'est un très bon module, et la FAQ est très amusante, surtout parce que beaucoup de gens demandent un support javascript ... http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/ FAQ.pod – AmbroseChapel

0

j'utiliser WWW::Mechanize pour la plupart la collecte de lien. Autre que cela je ferais ma propre correspondance:

my @links = $content =~ m`javascript:openpopup\('([^\']+)'`g; 
Questions connexes