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 :

récupération de pages


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut récupération de pages
    Bonjour à vous,
    je vous expose mon problème.
    Je fais par programme des lignes de commande pour récupérer des pages sur un site afin de les traiter. Cà marche jusqu'à un certain point, mais après, çà veut plus. Hors, en faisant un copier-collé de ces lignes avec mon navigateur, la même ligne fonctionne correctement.
    Peut-être un cookie à fournir? il y a du javascript J'y comprend rien

    Alors, si on pouvait m'indiquer la marche à suivre:
    Mon idée serait d'envoyer mes lignes de commande vers le navigateur et de récupérer les pages en retour.

    C'est peut-être un rêve fou?

    Mon seul désir est de faire faire par programme ce que je devrais faire à la souris. Je ne pense pas faire du piratage de cette façon? Mais bon, je ne peux quand même pas écrire ici la ligne de commande vers le site en question

    En config, j'ai un PC sous vista. J'utilise Mozilla en navigateur et python V3.1

    Bref, si vous aviez une solution, je vous en remercie à l'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Il faudrait que vous détaillez un peu plus les cas d'utilisation et les soucis que vous rencontrez. Sinon les difficultés sont plutôt dans le démêlage de ce que font les différents composants techniques que dans l'écriture de code.
    Cette discussion vous montre comment on peut récupérer les pages avec urllib2 ou avec automatize et en extraire ce qu'on veut.
    Ce post affiche les pages dans le browser WebKit via Qt. C'est parfois nécessaire pour récupérer le contenu de sites dynamiques.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour wiztricks,

    comme tu es modérateur, tu verras si je peux désigner un site ici. Lorsque je lance ce programme, çà fonctionne correctement, sauf que le résultat de la recherche reste à 0
    -ctrl F '<EM'
    Or si je lance cette même ligne sur mon navigateur la page est correctement affichée
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    import urllib.request
     
    def chargePage(url):
        print(url)
        sock = urllib.request.urlopen(url)
        buffer= sock.read()
        sock.close()
        return buffer
     
    urlbase= "http://www.aef.cci.fr"
     
    urlsuite= "/rechercheMulticritere"
    uri= "/services/cantons/executer?p_filtre=departements_"
     
    NAF2008= "/services/sousClassesNAF2008/executer?"
     
    selectcritere= "criteresSelectionnes"
    valider= "/valider?"
    comptage= "/comptage?"
    valideselect=  valider + selectcritere + "%3Alist=cantons_1001&"+\
                  selectcritere + "%3Alist=sousClassesNAF2008_0161Z"
    compteselect= comptage + selectcritere +\
               "%3Alist=cantons_1001&" +selectcritere +\
               "%3Alist=sousClassesNAF2008_0161Z"
     
     
    buffer= chargePage(urlbase+ urlsuite)
     
    print("********************************")
    """
    genereCantons("10")
    genereNAF2008()
    print("********************************")
    s= urlbase + urlsuite+ ' SetCookie:path=/_r_n'
    buffer= chargePage(s)
    chercheCookie()
    #print(str(buffer))
    """
    print("********************************")
    s= urlbase + urlsuite+ valideselect
    buffer= chargePage(s)
    print(str(buffer))
    Comme je suis sur python 3.1, je n'ai peut-être pas l'ensemble de libs disponibles, et je suis assez nouveau dans la matière.

    Dans un site précédent, qui n'existe plus, j'avais à extraire un "UserReference" de mes pages et les renvoyer avec mes commandes. Comme cette référence n'apparait plus, je me doute qu'il faudrait gérer les cookies. Mais là je suis sec
    a plus, Gigi

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Je n'ai pas de version Python 3.1 sous la main pour 'tester' alors j'ai modifié votre code pour qu'il utilise urllib2 python2.7. Ce qui ré-écrit chargePage ainsi:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import urllib2
     
    def chargePage(url):
        print(url)
        http = urllib2.urlopen(url)
        content = http.read()
        http.close()
        return content

    Et çà 'fonctionne', au sens ou çà retourne un contenu non vide mais différent car entré directement sous le navigateur çà trouve 3 entreprises alors que la page retournée par le script en "trouve" 0.

    Est ce que cela est "le problème"?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    re bonjour wiztricks,

    en effet, nous avons le même résultat. Ma page est correcte, sauf que, par mon programme le nombre d'entreprises est à 0.

    J'ai vu la doc python 3.1, il semble que le module urllib ait intégré urllib2. Ce qui nous ramène au même point.

    C'est pourquoi, au cas où, ce serait sympa de pouvoir envoyer mes commandes au navigateur et qu'il me retourne les pages.

    J'ai jeté un coup d'œil avec wireshark. Sur un accès normal avec le navigateur, on trouve une commande POST avec /valider, suivi d'un tas de cookies, puis les critères sélectionnés.
    C'est suivi d'une commande GET avec /comptage.
    Est ce que le navigateur remet ma commande en forme et envoie le tout dans le bon ordre?

    Mystère
    Allez à plus, merci pour tout, Gigi

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Le soucis est que la première requête retourne un cookie qu'il faut inclure dans les en-têtes de la requête suivante.
    La bibliothèque mechanize sait très bien gérer cela de façon transparente ou "programmatique".
    Vous pourriez y jeter un oeil.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Salut wiztricks,
    Hé bien çà marche!

    J'ai pas mal galéré, il a fallu changer de version. J'ai pris la 2.7 car mechanize plante sur la 3.1 et j'ai fini par comprendre où mettre la lib.

    Il y a un truc bizarre qui s'est passé. En chargeant mon source tous mes accents sont passés à la trappe?

    Enfin je te remercie grandement. J'espère bien mener l'affaire jusqu'au bout, mais j'aurais sans doute encore besoin de vous

    A bientôt, Gigi

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    bonjour à vous,
    voilà, je me doutais que c'était trop beau!! Domm

    j'ai bien avancé jusqu'au point des consulter les dernières pages du site.
    Sur la consultation des fiches, on me retourne une page avec:
    "La consultation des fiches
    est interdite en accès direct."
    Je passe le code en version Python 2.7:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    import mechanize
     
    def reponses(level, rep, cmd):
        if level== 0:
            rep.geturl()
            rep.info()
            rep.read()
        else:
            print rep.geturl()
            print rep.info()
            print rep.read()
        print cmd
     
    urlbase= "http://www.aef.cci.fr/rechercheMulticritere"
    selectcritere= "criteresSelectionnes"
    valider= "/valider?"
    valideselect=  valider + selectcritere + "%3Alist=cantons_1001&"+\
                  selectcritere + "%3Alist=sousClassesNAF2008_0161Z"
    liste= "/listeEntreprises"
    debut= "/?p_debut="
    curliste= "0"
     
    fiche= "/ficheEntreprise?"
    siret= "siret="
    nosiret= "34897822200027"
     
    request= mechanize.Request(urlbase)
    response= mechanize.urlopen(request)
     
    a= urlbase + valideselect
    request2= mechanize.Request(a)
    response2= mechanize.urlopen(request2)
    reponses(0, response2, a)
    print "********************************************"
    a= urlbase + liste + debut + curliste
    request3= mechanize.Request(a)
    response3= mechanize.urlopen(request3)
     
    reponses(0, response3, a)
    print "********************************************"
    a= urlbase + liste + fiche + siret + nosiret
    request4= mechanize.Request(a)
    response4= mechanize.urlopen(request4)
     
    reponses(1, response4, a)
    print "finiéèàù"
    Je suis tout nouveau sur mechanize il fait déjà beaucoup, alors un miracle de plus ou de moins ....

    Je vous remercie à l'avance, Gigi

Discussions similaires

  1. [RegEx] Récupération de pages
    Par zesavantfou dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2009, 23h48
  2. Récupération infos pages web
    Par zworg dans le forum Web & réseau
    Réponses: 1
    Dernier message: 06/03/2009, 08h45
  3. Récupération de page web
    Par mitchness dans le forum Web
    Réponses: 5
    Dernier message: 13/06/2008, 14h15
  4. Récupération de page Web
    Par kalash_jako dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 09/10/2006, 18h21
  5. [Réseau]Récupération de page Web
    Par n1c0las dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 27/03/2004, 18h15

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