Во-первых, чтобы получить значение рейтинга, например, «5 звезд: Отлично», вам просто нужно прочитать атрибут alt
из img
в div
с star-rating star-rating--medium
классом
Затем, чтобы получить значение даты, это немного сложно, потому что целевая дата загружается на javascript. Но вы можете получить его из тега script
чуть выше. Например: star.find('script')
Я обновил ваш фрагмент кода, и вот мы:
КОД:
import requests
from bs4 import BeautifulSoup
import time
import json
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"}
#def get_total_items(url):
#soup = BeautifulSoup(requests.get(url, format(0),headers).text, 'lxml')
stars = []
dates = []
results = []
with requests.Session() as s:
for num in range(1,2):
url = "https://www.trustpilot.com/review/www.boozt.com?page={}".format(num)
r = s.get(url, headers = headers)
soup = BeautifulSoup(r.content, 'lxml')
for star in soup.find_all("section", {"class":"review__content"}):
# Get rating value
rating = star.find("div", {"class":"star-rating star-rating--medium"}).find('img').get('alt')
# Get date value
date_json = json.loads(star.find('script').text)
date = date_json['publishedDate']
stars.append(rating)
dates.append(date)
data = {"Rating": rating, "Date": date}
results.append(data)
time.sleep(2)
print(results)
РЕЗУЛЬТАТЫ:
[{'Date': '2020-01-28T05:37:13Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-28T00:00:48Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T23:22:58Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T21:20:32Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T21:06:42Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T19:37:16Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T19:27:38Z', 'Rating': '2 stars: Poor'},
{'Date': '2020-01-27T18:20:48Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T17:18:42Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T16:15:17Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T15:58:49Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T15:46:29Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T15:39:23Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T15:32:43Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T15:29:21Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T15:27:30Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T14:35:29Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T13:43:40Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T13:37:53Z', 'Rating': '5 stars: Excellent'},
{'Date': '2020-01-27T12:58:58Z', 'Rating': '5 stars: Excellent'}]