簡體   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