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

时间:2018-02-08 13:15:39

标签: python web-scraping lxml

关于我的网络浏览器,我有一个小问题。 我试图在trustpilot网站上每次审查评分。 我们以https://www.trustpilot.com/review/www.amazon.com为例 尽管我设法抓住了评论内容和标题,但我似乎无法掌握给定的数量(1到5)。

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

但是,课程描述本身会提到给定的星星数量 - 五星评级有元素: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元素?

1 个答案:

答案 0 :(得分:0)

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