Bonjour,
J'aimerais savoir comment lister tous les liens hypertexte d'une page HTML ? Pour après les suivre avec urllib2 après.
Merci
Bonjour,
J'aimerais savoir comment lister tous les liens hypertexte d'une page HTML ? Pour après les suivre avec urllib2 après.
Merci
Ca devrait etre assez simple. En HTML les bornes des liens Hyper texte ressemble a <a href= "adresse">le nom du lien</a> a quelque chose pret.
Exemple extrait d'une page Google.Donc avec urlib tu te connect a une page avec liens hypertext, ensuite tu fait un readlines() afin d'avoir le texte entier, tu scannes ce texte en cherchant les balise <a href= et tu copies tout ce qu'il y a entre les guillemets, voila ta nouvelle adresse a suivre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href="http://www.google.fr/intl/fr/about.html">À propos de Google</a>
Une question qui peut rester sans réponse: Comment chercher?
Une expression régulière est tout à fait adaptée à ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part liens = [m.group(1) for m in re.finditer(r'<a[^>]+href="([^"]+)"[^>]+>(.+?)</a>', texte_page, re.DOTALL | re.IGNORECASE)]
Je ne connais que trop peu les expressions régulières. Mais je sors l'adresse en trois lignes. C'est toujours moins bien qu'en une seule.
Mais je ne sais toujours pas comment fonctionne les expressions régulière en python, un peu en perl... mais c'est loin.
Voila! Juste avec un traitement de chaine de caractère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>> chaine='<a href="http://www.google.fr/intl/fr/about.html">À propos de Google</a>' >>> chaine1=chaine.split('<a href="') >>> adresse=chaine1[1].split('">') >>> adresseUrl=adresse[0] >>> print adresseUrl 'http://www.google.fr/intl/fr/about.html'![]()
en 7 lettres, j'ai le module : htmllib
et en 9 lettres le module : HTMLParser
!
@mpereg, explication : si tu veux extraire des liens dans une page contenant des scripts tu peux trés bien avoir des chaînes "non standard" comme par ex :
Avec des expressions régulières ou la fonction "split()" cela ne donnera pas le bon résultat ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part "<a hlink='" & $mon_lien & "'>" & $mon_text & "</a>"![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager