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 du contenu d'une page web générée par javascript


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut Récupération du contenu d'une page web générée par javascript
    Bonjour,
    J'échange des données avec un fournisseur dans un process semi-automatique. En cas d'anomalies, je reçois par mail une url vers une page qui détaille les problèmes rencontrés.
    Le processus est un peu fastidieux: il faut s'identifier, rechercher dans la liste la transaction en erreur et enfin cliquer dessus pour visualiser le détail et je voudrais automatiser la récupération des infos par script.
    J'arrive à transmettre mes identifiants et accéder à la page qui liste les transactions en utilisant le module "requests". Le problème est que les données sont générées par du javascript et ne figurent pas dans le corps de la page.

    Sur le site web, lorsque je fais afficher le code source de la page, j'ai juste le nom des scripts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Ma page</title>
      <base href="/pageliste/">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="icon" type="image/x-icon" href="favicon.png">
    <link rel="stylesheet" href="styles.css"></head>
    <body>
      <app-root></app-root>
    <script src="scriptt1.js" type="module"></script><script src="script2.js" type="module"></script><script src="script3.js" defer></script><script src="script4.js" type="module"></script><script src="script5.js" type="module"></script></body>
    </html>
    Le résultat que j'obtiens avec requests.session.get(monUrl) est identique. Existe-il un moyen d'obtenir le "rendu" HTML plutôt que le code brut de la page?
    7 fois à terre, 8 fois debout

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 373
    Par défaut
    Bonjour,

    Logiquement va falloir émulé un navigateur, tu peux le faire avec l'option headless ( donc pas d'ouverture graphique et après tu vas chercher dans le contenu ce qui t'interesse, je te laisse tester et t'amusé, il en existe d'autre que Sélénium bien sur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
     
    options = Options()
    driver = webdriver.Chrome(options=options)  # Nécessite ChromeDriver installé
     
    driver.get("https://www.developpez.net/")
    print(driver.page_source)
     
    driver.quit()
    Franchement je sais pas si y a une autre manière, ca m'interresse


    NB:
    Mais tu dis que la page est généré via JS.
    Les données proviennent d'ou ? Parce que si ca vient d'une API, tape dessus direct non ?
    Si c'est un fichier plat style JSON, en soit tu peux toujours faire la même ...

    Cdt,
    Un problème sans solution est un problème mal posé. (Albert Einstein)

  3. #3
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Mais tu dis que la page est généré via JS.
    Les données proviennent d'ou ? Parce que si ca vient d'une API, tape dessus direct non ?
    Je suppose que les données sont générées par JS car il n'y a rien dans le code source de la page, à part ce qui semble être des noms de fichiers avec l'extension.js
    Lorsque j'arrive sur la page avec un navigateur, il y a une petite animation "loading" puis les données sont affichées, ce qui me laisse penser que c'est un de ces scripts qui est exécuté à l'ouverture
    Je ne sais pas exactement d'où viennent les données et il n'y a pas, à priori d'API', le fournisseur nous fourni seulement une url (différente à chaque fois) en cas de problème

    Je ne connais pas selenium, je vais regarder de ce côté-là
    7 fois à terre, 8 fois debout

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 373
    Par défaut
    Techniquement tu as accès aux code sources JS donc tu peux voir d'ou proviennent les datas

    Bon courage
    Un problème sans solution est un problème mal posé. (Albert Einstein)

  5. #5
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Je suis sur la bonne voie avec Selenium
    Une fois la page chargée, je peux accéder aux éléments affichés à l'écran, qui ne figurent pas dans le source de la page
    7 fois à terre, 8 fois debout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire le contenue d'une page web généré par Ajax
    Par icb3a dans le forum Web & réseau
    Réponses: 7
    Dernier message: 26/07/2010, 23h46
  2. [JSP][WEB] recuperer le contenu d'une page web
    Par ypikahe dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 14/03/2008, 10h10
  3. recuperer le contenu d'une page web
    Par firejocker dans le forum MFC
    Réponses: 26
    Dernier message: 11/10/2005, 17h27
  4. copier le contenu d'une page web dans un fichier texte
    Par wassila dans le forum C++Builder
    Réponses: 30
    Dernier message: 28/08/2005, 22h27
  5. Réponses: 2
    Dernier message: 16/07/2004, 09h30

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