我有一个关于我的网络大厦的小问题。我正在尝试对trustpilot上的一个网站的每个评论进行评分。让我们以https://www.trustpilot.com/review/www.amazon.com为例,尽管我设法抓取了评论内容和标题,但我似乎无法掌握给出的星的数量(1到5)。
如果我看一下html代码,它不会显示'text‘,所以我可以给它分配特定的类(就像我对content和title所做的那样)。
然而,给出的星级数量在类别描述本身中提到-5星级评级具有元素:div class=''star-rating count-5 size-medium clearfix''. a 2-star rating the following: iv class=''star-rating count-2 size-medium clearfix''
此类位于: div class="review-info clearfix“
有没有人知道我如何抓取文字类,或者每次复查只需要count-x元素?
发布于 2018-02-08 21:34:58
可以使用BeautifulSoup轻松地提取该类
from bs4 import BeautifulSoup
import requests
c = requests.get('https://www.trustpilot.com/review/www.amazon.com').content
soup = BeautifulSoup(c, 'html.parser')
reviews = soup.find_all('div', {'class': 'review-stack'})
for review in reviews[:5]:
print(review.find('div', {'class': 'star-rating'})['class'])这将打印出以下列表:
['star-rating', 'count-5', 'size-medium', 'clearfix']
['star-rating', 'count-5', 'size-medium', 'clearfix']
['star-rating', 'count-1', 'size-medium', 'clearfix']
['star-rating', 'count-4', 'size-medium', 'clearfix']
['star-rating', 'count-4', 'size-medium', 'clearfix']现在,您只需选择列表中的正确元素,即可获得您的评分。
使用lxml:
from lxml import html
import requests
page = requests.get('https://www.trustpilot.com/review/www.amazon.com')
tree = html.fromstring(page.content)
reviews = tree.xpath("//div[@class='review-info clearfix']/div[1]")
for rev in reviews:
print(rev.get('class'))https://stackoverflow.com/questions/48686393
复制相似问题