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

Résolu
nik029 Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -  
nik029 Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

1 réponse

Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   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
nik029 Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   44
 
Avec
print(div)
, j'obtiens toujours None.
0
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171 > nik029 Messages postés 281 Date d'inscription   Statut Membre Dernière intervention  
 
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
quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   347 > nik029 Messages postés 281 Date d'inscription   Statut Membre Dernière intervention  
 
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
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171 > quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention  
 
ça me paraît logique aussi. j'y avais pas vraiment réfléchi
0
nik029 Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   44
 
Je viens de réessayer aujourd'hui dans les deux cas, à chaque fois, on me renvoie None
0