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

Réseau/Web Python Discussion :

Code source HTML réel


Sujet :

Réseau/Web Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Code source HTML réel
    Bonjour à tous,

    Alors voilà, je suis débutant en Python et pour un projet je dois parser un certain nombre de pages du site www.priceminister.com .
    Dans la plupart des cas il n'y a pas de problème, je récupère le code source avec urllib.urlopen et le parse avec BeautifulSoup.

    Mais dans certains cas le code source renvoyé pas urllib.urlopen ne correspond pas à se qui est affiché réellement (même si c'est bien le code source renvoyé par le navigateur)...

    Voilà un exemple de page posant problème (même le titre de la page ne correspond pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import urllib
    from bs4 import BeautifulSoup
     
    sock = urllib.urlopen('http://www.priceminister.com/mfp/1000047/nokia-x3-02#pid=250079160')
    htmlSource = sock.read()
    sock.close()
    print(htmlSource)
    Le code que j'aimerais récupérer est celui qui s'affiche en faisant ctrl+A et code source de la sélection (avec firefox), quelqu'un aurait une solution ou saurait d'où vient le problème?

    Merci d'avance!

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    La différence est l'insertion d'un script js, par le serveur ou du moins le cms.

    Le reste est à l'identique, que ce soit downloadé par Python ou wget.

    Est-ce que ce sont justement ces javascripts que tu as besoin de trouver avec ton code ? Si non, alors tu peux considérer la page comme identique.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    La différence est l'insertion d'un script js, par le serveur ou du moins le cms.

    Le reste est à l'identique, que ce soit downloadé par Python ou wget.

    Est-ce que ce sont justement ces javascripts que tu as besoin de trouver avec ton code ? Si non, alors tu peux considérer la page comme identique.
    Merci de ta réponse,

    Je ne suis pas sure que javascript soit le seul problème car le code renvoyé par python semble n'être que le footer de la page. Par exemple la balise title est vide alors que dans le navigateur un titre s'affiche bien...

    La partie qui m’intéresse est celle qui contient la liste des produits mais elle n'apparait pas dans le code source. Je t'ai joint un txt avec le code retourné par python qui ne correspond pas à l'affichage.

    Python.txt

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Lorsque, dans ton navigateur, tu te fais afficher le code source de la page tu obtiens la même chose qu'avec Python mais avec une douzaines de lignes de javascript en plus et la balise <title> est vide dans les deux cas.

    Tu peux utiliser "Analyser l'élément" à la place pour essayer de comprendre d'où proviennent les infos manquantes au code.




    Au temps pour moi, c'est "Examiner l'élément". Je l'ai vérifié sur le premier objet (Nokia X3-02 Noir Nokia) et on trouve ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
            <a class="pmbt pmbtjs ft_link" href="javascript:void PM.BT.ubs(47,'s',47,'nokia')">
                Nokia
            </a>
        </span>
        <p class="productRate" itemtype="http://schema.org/AggregateRating" itemscope="itemscope" itemprop="aggregateRating">
            <span class="starRating rating_5"></span>
            <a id="link_see_review" onclick="PM.Statistics.tagClick(PM.Statistics.Xtn2.FPDA, 'FicheProdui…NAVIGATION); PM.AdvertList.scrollWithSharpTechno('reviews');"></a>
            <a id="link_game_review" onclick="PM.AdvertList.openReviewsForm(250079160);">
                Déposer un avis
            </a>
        </p>
        <div id="dropdown-template-container">
            <div id="mfp_dropdown" class="tooltipCtn crossEdition"></div>
        </div>
    </div>
    <div id="buybox" class="buybox well">
        <ul class="priceInfos">
            <li class="price typeUsed">
                60,00 €
            </li>
            <li class="tooltipCtn unEuroPayment">
                <p class="tooltipLabel"></p>
                <div id="pm_1euro_content_703940035_bb" class="box tooltip tooltip_M unEuro"></div>
    Ce n'est qu'un extrait, bien sur.

    Personnellement, j'ignore comment tu pourras récupérer ces infos avec Python en partant du seul lien de la page. Mais je ne dis pas que ce soit impossible.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    C'est effectivement ce genre d'infos que j'aimerais récupérer.

    Il me faudrait donc un programme où un site capable de me fournir le même code que celui renvoyé par l'examinateur d’éléments pour ne plus avoir de javascript. Je vais essayer de voir se que je trouve!

    En tout cas merci pour le temps que tu as consacré à mon problème

  6. #6
    Inactif  
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 114
    Points : 93
    Points
    93
    Par défaut
    La question date, c'est un peu du déterrage, mais comme aucune solution n'a été proposée...

    Pour récupérer le source tel que présenté dans "analyser l'élément", c'est-à-dire une fois tout le DOM chargé, Javascript qui a tourné, etc... J'avais utilisé une fois PhantomJS, qui est, grosso merdo, un navigateur web sans affichage.
    Je m'en étais servi pour scraper des offres d'emploi sur le site de Manpower lorsqu'à une époque l'affichage des offres s'effectuait en Javascript. (ce n'est plus le cas maintenant).

    http://phantomjs.org/

Discussions similaires

  1. Afficher code source HTML
    Par ensi08 dans le forum Débuter
    Réponses: 6
    Dernier message: 07/09/2008, 01h35
  2. [Tableaux] stocker code source html dans variable php
    Par vonwolf dans le forum Langage
    Réponses: 5
    Dernier message: 12/12/2007, 22h40
  3. Faire un parsing "rapide" sur le code source html de www.break.com
    Par Inquirer94 dans le forum Général Java
    Réponses: 3
    Dernier message: 27/03/2007, 12h33
  4. visualisation et code source html
    Par battle dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 28/12/2006, 19h00
  5. Exploiter Code Source HTML
    Par mxh77 dans le forum 4D
    Réponses: 12
    Dernier message: 13/12/2006, 10h45

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