Scraper des données sur une page web en Python avec BeautifulSoup

Résolu
nik029 Messages postés 315 Statut Membre -  
nik029 Messages postés 315 Statut Membre -
Bonjour,

1. Lorsque j'utilise ce code Python ci-dessous :
>>> requete = requests.get("https://zestedesavoir.com/bibliotheque/")
>>> page = requete.content
>>> soup = BeautifulSoup(page)
>>> div = soup.find("div", {"class": "linkbox-item primary"})
>>> print(div.string)

Pourquoi le résultat obtenu est "None", et non la liste de tous les éléments des <div class="linkbox-item primary"></div> de la page ?

2. Par ailleurs, pourquoi ce code ci :
>>> h1 = soup.find_all
>>> liste_titre = [elt.string.strip() for elt in h1]

ne fonctionne pas et me renvoie à l'erreur :
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
liste_titre = [elt.string.strip() for elt in h1]
TypeError: 'method' object is not iterable

En vous remerciant par avance :)

Configuration: Macbook Pro Retina 13" mi-2014


--
Une fois un problème résolu, mettez un +1 sur la réponse qui vous à aidez et mettez Problème Résolu ! ;-)

1 réponse

  1. Jithel Messages postés 1049 Statut Membre 171
     
    L'objet renvoyé contenu dans la variable "div" est un objet Tag de BeautifulSoup. Selon la documentation :
    https://www.crummy.com/software/BeautifulSoup/bs4/doc/#tag

    il n'existe pas de champ "string" dans cet objet. Par contre, si tu fais
    print(div)
    tu obtiens un résultat exploitable.

    Concernant le deuxième point, il y a à mon avis une erreur. "find_all" est une fonction et non un attribut soit :
    h1 = soup.find_all(…) # ne pas oublier de mettre les bons paramètres
    0
    1. nik029 Messages postés 315 Statut Membre 44
       
      Avec
      print(div)
      , j'obtiens toujours None.
      0
    2. Jithel Messages postés 1049 Statut Membre 171 > nik029 Messages postés 315 Statut Membre
       
      Je ne sais pas alors parce que j'ai fait exactement la même chose en Python 3.7, j'obtiens un résultat
      0
    3. quent217 Messages postés 424 Statut Membre 348 > nik029 Messages postés 315 Statut Membre
       
      Bonjour,
      je ne connais pas BeautifulSoup mais si
      print(div)
      affiche None,
      print(div.string)
      devrai générer une erreur et pas afficher None. Il y a une incohérence quelque part.
      0
    4. Jithel Messages postés 1049 Statut Membre 171 > quent217 Messages postés 424 Statut Membre
       
      ça me paraît logique aussi. j'y avais pas vraiment réfléchi
      0
    5. nik029 Messages postés 315 Statut Membre 44
       
      Je viens de réessayer aujourd'hui dans les deux cas, à chaque fois, on me renvoie None
      0