我当前获取所需内容的代码如下所示:
#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