J'utilise BeautifulSoup et j'analyse certains HTML.
J'obtiens certaines données de chaque HTML (en utilisant la boucle for) et j'ajoute ces données à une certaine liste.
Le problème est que certains HTML ont un format différent (et ils ne contiennent pas les données que je veux) .
Donc, j'essayais d'utiliser la gestion des exceptions et d'ajouter de la valeur null
à la liste (je devrais le faire car la séquence de données est importante.)
Par exemple, j'ai un code comme:
soup = BeautifulSoup(links)
dlist = soup.findAll('dd', 'title')
# I'm trying to find content between <dd class='title'> and </dd>
gotdata = dlist[1]
# and what i want is the 2nd content of those
newlist.append(gotdata)
# and I add that to a newlist
et certains des liens n'en ont pas <dd class='title'>
, donc ce que je veux faire est d'ajouter une chaîne null
à la liste à la place.
L'erreur apparaît:
list index out of range.
Ce que j'ai fait, c'est d'ajouter quelques lignes comme ceci:
if not dlist[1]:
newlist.append('null')
continue
Mais ça ne marche pas. Il montre toujours une erreur:
list index out of range.
Que dois-je faire à ce sujet? Dois-je utiliser la gestion des exceptions? ou y a-t-il un moyen plus simple?
Aucune suggestion? Toute aide serait vraiment géniale!
la source
None
c'est clairement plus propre, l'OP veut'null'
dans ce cas.Vous avez deux options; gérer l'exception ou tester la longueur:
ou
Utilisez le premier s'il n'y a souvent pas de deuxième élément, le second s'il n'y a parfois pas de deuxième élément.
la source
Un ternaire suffira. changement:
à
c'est une manière plus courte d'exprimer
la source
Prenant référence à ThiefMaster ♦ parfois nous obtenons une erreur avec une valeur donnée comme '\ n' ou null et exécutons pour ce qui est nécessaire pour gérer ValueError:
Gérer l'exception est la voie à suivre
la source
la source
Pour toute personne intéressée par un moyen plus court:
Mais pour de meilleures performances, je suggère d'utiliser à la
False
place de'null'
, puis un test d'une ligne suffira:la source