如何从html源代码中具有相同属性集和相同层次结构的2个元素中抓取单个元素(使用python的漂亮汤)

《如何从html源代码中具有相同属性集和相同层次结构的2个元素中抓取单个元素(使用python的漂亮汤)》

我想废弃图像中用蓝色突出显示的元素.这个元素表示特定电影的“没有投票”.当我试图刮掉它时,我也在图像中获得底部元素,代表“集合” “对于那部电影,因为两个元素都有相同的属性,并且在同一层次结构中.有没有办法只提取突出显示的元素?

最佳答案 一种方法可以迭代< p class =“sort-num_votes-visible”>的所有兄弟姐妹.如果你找到< span name =“nv”>由< span class =“text-muted”>包围的那个…和< span class =“ghost”>那么这一定是你正在寻找的范围.这当然意味着HTML片段的结构始终是相同的.如果其中一个跨度可能丢失,那么这种方法显然会失败.

如果保证这两个跨度总是在那里并且按照确切的顺序你可以做这样的事情(你的灵活的HTML在html_soup中):

votes = html_soup.find("p", {"class": "sort-num_votes-visible").find_all("span", {"name": "nv"})[0]

编辑:

根据您的评论,您可以执行以下操作以解析多部电影的投票:

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
      ...
    >
点赞