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 :

Chargement de données Beautifulsoup


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 25
    Par défaut Chargement de données Beautifulsoup
    Bonjour,

    Je souhaite récupérer des données météo sur une page web, mais je rencontre des problèmes car mon script récupère les données avant que celles ci ne soient chargées sur la page web.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import requests
    from bs4 import BeautifulSoup
    import time
     
    page=requests.get("https://www.wunderground.com/history/daily/sg/singapore-payalebar/WSAP/date/2018-1-5")
    soup=BeautifulSoup(page.content,'html.parser')
    table=soup.find(class_='summary-table').get_text()
    title=soup.find(class_='summary-title').get_text()
    print(table)
    print(title)
    Ainsi, python me retourne No Data Recorded car la page web n'a pas eu le temps de charger les données.
    J'aimerai donc savoir comment faire sans avoir à utiliser Selenium.
    Merci pour votre aide.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Citation Envoyé par Barth2501 Voir le message
    Ainsi, python me retourne No Data Recorded car la page web n'a pas eu le temps de charger les données.
    requests.get se termine avec le contenu de la "page" ou un message d'erreur.
    Pour vous en assurer, vous pouvez regarder ce que contiennent page.status_code, la taille du texte via len(page.content),...
    Et si la page a bien été lue, c'est que votre soucis est ailleurs.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 25
    Par défaut
    Merci pour votre message.
    La page en elle même se charge correctement mais c'est les données qu'elle contient qui n'ont pas eu le temps de se charger lorsque je récupère les données.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Barth2501 Voir le message
    La page en elle même se charge correctement mais c'est les données qu'elle contient qui n'ont pas eu le temps de se charger lorsque je récupère les données.
    Si votre page contient du Javascript qui, exécuté par le navigateur, chargera dynamiquement des bouts de ce qui s'affiche (dans la fenêtre de votre navigateur Web), vous pouvez les attendre longtemps...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 25
    Par défaut
    Oui je m’en doute et ce n’est pas ce que je veux dire.
    Mon problème est que la page nécessite plusieurs secondes pour se charger alors que mon script, en utilisant BeautifulSoup, n’attend pas que la page se charge pour récupérer les infos.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Barth2501 Voir le message
    Oui je m’en doute et ce n’est pas ce que je veux dire.
    Mon problème est que la page nécessite plusieurs secondes pour se charger alors que mon script, en utilisant BeautifulSoup, n’attend pas que la page se charge pour récupérer les infos.
    Si requests.get ou BeautifoulSoup étaient asynchrones, ce serait documenté et tous les exemples d'utilisations sur Internet montreraient comment attendre la fin du chargement avant d'y chercher quelque chose.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 25
    Par défaut
    D’accord mais concrètement comment pourrais je résoudre mon problème?
    Je souhaite récupérer les données météo de ce site web.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Barth2501 Voir le message
    D’accord mais concrètement comment pourrais je résoudre mon problème?
    Je souhaite récupérer les données météo de ce site web.
    Déjà en évitant d'inventer des problèmes qui n'existent pas.

    Ensuite si vous voulez "automatiser" la récupération de données qui s'affichent sur votre navigateur Web, il va falloir apprendre à lire le HTML de la page pour y trouver les instructions exécutées par le navigateur et imaginer comment faire sans.
    Ce boulot: comprendre ce que fait le navigateur, la structure d'une page Web,... n'a rien à voir avec Python (ou le langage utilisé pour coder) mais si vous n'en avez aucune idée, vous ne saurez pas quoi coder.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 25
    Par défaut
    Mais enfin je sais quoi coder et où trouver les éléments dans le code html de la page.
    Ce que je souhaite c’est importer les données météos, provenant d’une page web (et se trouvant dans un div avec la classe summary-text), dans python pour pouvoir par la suite les manipuler avec Panda. Mon problème car il existe c’est que cette page web en question met plus de temps à s’actualiser que la requête get de requests.
    Je suis donc à la recherche d’une solution permettant de contourner ce problème de temps d’actualisation.

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Barth2501 Voir le message
    Je suis donc à la recherche d’une solution permettant de contourner ce problème de temps d’actualisation.
    Si vous regardez le contenu de la page qui a été chargée, vous verriez que c'est du Javascript qui charge ce que vous attendez (en vain).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 25
    Par défaut
    Ok et donc auriez vous une solution pour que je puisse récupérer les infos de ce module JavaScript?

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Barth2501 Voir le message
    Ok et donc auriez vous une solution pour que je puisse récupérer les infos de ce module JavaScript?
    Non, elle est a construire en analysant le contenu de la page et voir comment on peut récupérer les données directement ou farfouiller sur le site Web pour voir s'il ne mettent pas les données à disposition sous un format plus simple à exploiter.

    Dans tous les cas, c'est un boulot assez vite fastidieux et qui prend du temps: pas grand monde fera à votre place (en tout cas pas moi) d'autant qu'il n'a rien à voir avec la programmation Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 25
    Par défaut
    Ok j’avais rangé cette discussion dans la programmation Python car elle concernait la librairie beautifulsoup de python. Je pensais pouvoir récupérer des données sous module JavaScript aussi bien que sous module HTML avec beautifulsoup, apparemment ce n’est pas le cas.
    Pensez vous que je dois obligatoirement passer pas sélénium ou autre headless browser pour gérer le JavaScript?

  14. #14
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par Barth2501 Voir le message
    Pensez vous que je dois obligatoirement passer pas sélénium ou autre headless browser pour gérer le JavaScript?
    obligatoirement non, mais c'est probablement la plus simple et propre pour faire ce que tu cherches à faire, en l'occurrence du scraping, les plateformes de freelances type codeur.com et autres upwork regorgent de demandes de ce genre

Discussions similaires

  1. [DBA] Chargement de données via txt ou xls
    Par divail dans le forum SQL
    Réponses: 4
    Dernier message: 08/03/2006, 10h07
  2. Réponses: 1
    Dernier message: 09/02/2006, 10h11
  3. Réponses: 1
    Dernier message: 07/12/2005, 17h53
  4. Chargement de données texte.
    Par Guiadeur dans le forum Oracle
    Réponses: 1
    Dernier message: 19/10/2005, 11h42
  5. texture dynamique et chargement de données
    Par Mastero dans le forum DirectX
    Réponses: 6
    Dernier message: 03/05/2005, 14h37

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