Partage
  • Partager sur Facebook
  • Partager sur Twitter

[webscraping] Descente dans l'arborescence

Beautifulsoup

    17 octobre 2018 à 11:50:18

    Bonjour,

    Je débute dans le webscraping et j'essaye d'accéder au contenu d'un tableur framacalc, celui-ci pour l'exemple : https://lite.framacalc.org/IihrcbhCLY

    Il n'y a aucun problème pour récupérer le code HTML mais ensuite, je n'arrive pas à accéder au contenu des cellules, que j'ai pourtant localisé dans le code HTML. J'arrive tout d'abord à accéder à la division "tableeditor", puis à son-unique sous-division qui semble alors vide alors qu'elle ne devrait pas l'être.

    tableeditor = html.findAll(id ='tableeditor')[0]
    div = tableeditor.findAll(True)[0]
    print(div.findAll(True))

    La console affiche une liste vide...

    Quelqu'un aurait-il un éclairage à m'apporter ? Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2018 à 11:57:48

      Il y a du nouveau, j'ai investigué et il s'avère que le code html n'est pas complet. Je ne comprends pas d'où ça peut venir :

      import requests
      from bs4 import BeautifulSoup
      
      requete = requests.get('https://lite.framacalc.org/IihrcbhCLY')
      page = requete.content



      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2018 à 14:35:35

        Bonjour,

        C'est simplement que le contenu du tableur est chargé plus tard en javascript, et n'est donc pas disponible lorsque tu scrapes la page.

        • Partager sur Facebook
        • Partager sur Twitter
          7 novembre 2018 à 11:06:21

          Bonjour, merci de la réponse, je comprends mieux le problème maintenant.

          Y-a-t'il des moyens de scrapper côté client avec python et d'ainsi obtenir le html chargé par javascript ?

          En faisant des recherches je suis tombé sur artoo qui peut apparemment se coupler avec node.js pour faire des choses qui correspondent à mon besoin. Cependant, même si j'ai réussi à prendre en main artoo, j'ai du mal à l'utiliser avec node.js et c'est pour ça que je préférerais rester sur du Python si possible.

          -
          Edité par Poco_ 7 novembre 2018 à 11:29:41

          • Partager sur Facebook
          • Partager sur Twitter
            7 novembre 2018 à 11:43:43

            J'ai fais du webscraping en python, les méthodes que j'utilise dépendent beaucoup du site visé.

            Si le contenu de la page est chargé en JS, c'est qu'il y a une requête AJAX que tu devrais pouvoir reproduire. Utilile l'outil de développement sur firefox et regarde les requêtes qui sont faites lorsque tu charge la page. Souvent les données sont téléchargées en JSON donc dans ce cas le scrap est plutôt facile. J'ai quelques codes très aboutis où je ne télécharge aucun fichier HTML mais uniquement des JSON.

            Mais parfois ce n'est pas si simple. Il reste toujours selenium, avec ça tu peux prendre le contrôle d'un navigateur et traiter le HTML après chargement complet de la page. C'est plus compliqué à coder, le scrap est plus long, ça plante même plus souvent mais ça évite à eu près tous les obstacles (sauf captcha).

            -
            Edité par thelinekioubeur 7 novembre 2018 à 11:44:18

            • Partager sur Facebook
            • Partager sur Twitter
              7 novembre 2018 à 12:06:35

              Merci de la réponse rapide.

              Je crois que je vais m'orienter vers selenium, cela semble en effet bien adapté à l'ensemble de mes besoins.

              • Partager sur Facebook
              • Partager sur Twitter

              [webscraping] Descente dans l'arborescence

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown