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>
[SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit
Mon premier Tutoriel
A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...
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'
[SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit
Mon premier Tutoriel
A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...
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>"
Avant de poster un message .
Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .
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