Partage
  • Partager sur Facebook
  • Partager sur Twitter

Entrainement extraire données site web

Sujet résolu
    25 septembre 2023 à 12:04:46

    Bonjour,

    J'ai suivi le cours sur Python et l'extraction de données web et je voulais m'exercer en récupérant des recettes de cuisine d'un site.

    • Pour le code, j'ai utilisé "Replit", voici le lien https://replit.com/@ThomasBOUTIN/main#recettes_sucr%C3%A9e.html
    • Ne connaissant pas les lignes de code pour se connecter automatiquement, j'ai enregistré la page de toutes les recettes sucrées et l'ai copié dans "recettes_sucrée.html"
    • Voici le code "main.py":
    • from fonctions_html import recupere_html, parse_html, enregistrer_html, recuperation_balise_p
      page = "recettes_sucrée.html"
      nom_liste = recuperation_balise_p(page) #Récupérer la liste de nom de toutes les recettes sucrées
      print(nom_liste)
    • Voici le code "recuperation_balise_p" dans "fonctions_html"
    • #fonction pour enregistrer les balises <div> incluent dans les balises <ul>
      def recuperation_balise_p(page):
        divisions = page.find_all('li', class_ = "ais-Hits-item")
        print(divisions)
        nom_liste = []
        for division in divisions:
          name = division.find('div').string
          nom_liste.append(name)
        return nom_liste

    • J'ai le message d'erreur suivant:
      • Je n'arrive pas à comprendre où est l'erreur. Quelqu'un peut m'aiguiller?


      • Merci

    -
    Edité par ThomasSatoshi 25 septembre 2023 à 12:06:06

    • Partager sur Facebook
    • Partager sur Twitter
      25 septembre 2023 à 13:41:18

      Bonjour,

      divisions = page.find_all('li', class_ = "ais-Hits-item")

      'str' object has no attribute 'find_all' :

      un objet de type string n'a pas d'attribut find_all

      or, page est une variable de type string : page = "recettes_sucrée.html"

      -
      Edité par Phil_1857 25 septembre 2023 à 13:41:48

      • Partager sur Facebook
      • Partager sur Twitter
        25 septembre 2023 à 15:04:28

        Bonjour Phil_1857,


        Je viens d'essayer avec une vraie adresse url (https:\\...) et je n'ai plus d'erreur.

        A partir d'un fichier html enregistré, il est possible de faire fonctionner BeautifulSoup?

        J'ai regardé la doc de BeautifulSoup, je n'ai rien trouvé de convaincant.
        Merci:D

        • Partager sur Facebook
        • Partager sur Twitter
          25 septembre 2023 à 18:09:13

          ThomasSatoshi a écrit:

          J'ai regardé la doc de BeautifulSoup, je n'ai rien trouvé de convaincant.

          Si avec une "vraie" requête, on code:
          page = requests.get(url)
          soup = BeautifulSoup(page.content, 'html.parser')


          c'est à soup qu'on va appliquer find_all.

          Et si on doit récupérer ce qui est passé à BeautifulSoup depuis un fichier, on va lui passer le contenu du fichier: open(...).read()

          • Partager sur Facebook
          • Partager sur Twitter
            26 septembre 2023 à 10:14:34

            Merci mps. En faisant comme ça, cela fonctionne
            with open(url, 'r') as file:
              html_soup = BeautifulSoup(file, 'html.parser')
            • Partager sur Facebook
            • Partager sur Twitter

            Entrainement extraire données site web

            × 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