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

时间:2019-01-07 14:45:14

标签: html python-3.x beautifulsoup web-crawler

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

#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(),因为它是一个无对象。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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