Je veux extraire l'élément surligné en bleu dans l'image, qui représente le "nombre de votes" pour un film particulier. Lorsque j'essaie de l'extraire, j'obtiens également l'élément du bas dans l'image, qui représente les "collections" pour ce film, car les deux éléments ont les mêmes attributs et sont dans la même hiérarchie.
Réponses
Trop de publicités?Une approche pourrait être d'itérer sur tous les frères et sœurs de <p class="sort-num_votes-visible">
et si vous trouvez un <span name="nv">
qui est entouré d'un <span class="text-muted">
et un <span class="ghost">
alors ce doit être la portée que vous recherchez. Cela implique bien sûr que la structure de ce fragment de HTML est toujours la même. Si l'un de ces span
pourraient manquer, cette méthode échoue évidemment.
S'il est garanti que ces deux travées sont toujours présentes et dans l'ordre exact, vous pouvez faire quelque chose comme ceci (votre HTML modifié est dans le fichier html_soup
) :
votes = html_soup.find("p", {"class": "sort-num_votes-visible").find_all("span", {"name": "nv"})[0]
EDIT :
Selon votre commentaire, vous pourriez faire ce qui suit afin d'analyser les votes pour plusieurs films :
for p in html_soup.find("p", {"class": "sort-num_votes-visible"}):
votes = p.find_all("span", {"name": "nv"})[0]
< Put whatever code here for each of your movies
...
>
Vous pouvez utiliser quelque chose comme ceci (en supposant que vous utilisez BeautifulSoup) :
soup = BeautifulSoup('yourhtml', 'lxml')
p_sort = soup.find('p', {'class':'sort-num_votes-visible'})
req_span = p_sort.find_all('span', {'name':'nv'})[0]
req_span
contiendra la balise que vous avez demandée.