繁体   English   中英

使用lxml xpath刮取Python 3中的文字类描述

[英]Scraping literal class description in Python 3 using lxml xpath

我对自己的网络爬虫有一个小问题。 我正在尝试在trustpilot上对每个网站的评论进行评分。 让我们以https://www.trustpilot.com/review/www.amazon.com为例,尽管我设法抓取了评论内容和标题,但我似乎无法掌握所给出的星星数量(1至5)。

如果我看html代码,它不会显示'text',所以我可以为其分配特定的类(就像我对内容和标题所做的那样)。

但是,给出的星级数量在类别说明本身中被提及-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=''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元素?

可以使用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'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM