Bonjour le Forum,
Petite question sur la gestion des erreurs avec beautifulsoup et surtout avoir un code pas trop chargé
Voici l'exemple :
Le soucis est que si ca plante (le find renvoi None) sur une des lignes le code s'arête (Puisque None n'a pas de fonction .text)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 the_dict['full_name'] = soup.find("div",{"id":"123"}).findAll("span",{"class":"nom"})[0].text.strip() the_dict['function'] = soup.find("div",{"id":"123"}).findAll("span",{"class":"titre"})[0].text.strip() the_dict['email'] = soup.find("div",{"id":"123"}).findAll("p",{"class":"email"})[0].find("a").text.strip()
Une solution est de mettre des try/except .... donc à toutes les lignes : c'est un peu crade
Autre solution, coller à la fin de chaque ligne un if soup.find(....) else ''
Ou encore découper la ligne en faisant le .text.strip() uniquement si la valeur n'est pas None
Je trouve ces 3 solutions un peu "moches", on rajoute beaucoup de ligne, ca nuit à la lisibilité du code.
Existe t'il une solution plus propre et plus lisible ?
Merci pour votre aide
Thais
Partager