获取另一个标签<span>内的<span>标签之间的文本



我当前获取所需内容的代码如下所示:

#BeautifulSoup
textContent = []
headline = soup.find('a', attrs={"class":"title"}).text
review = soup.find('div', attrs={"class":"text show-more__control"}).text
rating = soup.find('div', attrs={"class":"rating-other-user-rating"})
textContent.append(headline)
print(headline)
textContent.append(review)
print(review)
textContent.append(rating)
print(rating)

我得到评论的标题和文本,但没有评级,因为这些信息与其他信息处于不同的"标签系统"中。在 html 代码上,它看起来像这样:

<span class="rating-other-user-rating">
        <svg class="ipl-icon ipl-star-icon  " xmlns="http://www.w3.org/2000/svg" fill="#000000" height="24" viewBox="0 0 24 24" width="24">
            <path d="M0 0h24v24H0z" fill="none"></path>
            <path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path>
            <path d="M0 0h24v24H0z" fill="none"></path>
        </svg>
            <span>6</span><span class="point-scale">/10</span>
        </span>

我想得到的信息是"6"。显然,我不能只使用"soup.find.---.text(),因为它是一个None-Object。

感谢您的帮助!

1) 将'div ' 更改为'span'

2)

  • a)然后你可以得到文本
  • b) 去除空格,以获得6/10
  • c) 在'/'处拆分
  • d) 在索引 [0] 处获取该列表中的元素

取代:

rating = soup.find('div', attrs={"class":"rating-other-user-rating"})

跟:

rating = soup.find('span', attrs={"class":"rating-other-user-rating"}).text.strip().split('/')[0]

输出:

print (rating)
6

最新更新