IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lister les liens hypertexte


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 44
    Points : 27
    Points
    27
    Par défaut Lister les liens hypertexte
    Bonjour,

    J'aimerais savoir comment lister tous les liens hypertexte d'une page HTML ? Pour après les suivre avec urllib2 après.

    Merci

  2. #2
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.google.fr/intl/fr/about.html">À propos de Google</a>
    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.
    [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...

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    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)]

  4. #4
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    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.

    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'
    Voila! Juste avec un traitement de chaine de caractère.
    [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...

  5. #5
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<a hlink='" & $mon_lien & "'>" & $mon_text & "</a>"
    Avec des expressions régulières ou la fonction "split()" cela ne donnera pas le bon résultat ...
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/04/2006, 16h14
  2. [RegEx] extraire les liens hypertexte d'une page web
    Par lalama dans le forum Langage
    Réponses: 1
    Dernier message: 22/03/2006, 10h43
  3. aide sur les lien Hypertext
    Par kantbill dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 26/05/2005, 12h12
  4. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo