[英]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.