Я пытаюсь очистить количество звезд, которое каждый рецензент дает продукту.Я заметил, что некоторые рецензенты являются "Vine Voices" или платными рецензентами.Они редко дают 4, в основном 5 звезд.Поэтому я бы хотел исключить их.
Я делаю это, помечая их как «Оплаченные» или «Неоплаченные», если отзыв помечен как «a-color-success a-text-».жирный "тег".
Я не могу добавить какие-либо теги "Оплачено" в переменную vine.Почему?
Только у тех обзоров, которые написаны Vine Voice, есть тег, у тех, у кого нет тега в "платных".
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'}
rating_list = []
date_list = []
vine = []
for num in range(1,12):
url = "https://www.amazon.com/Jabra-Wireless-Noise-Canceling-Headphones-Built/product-reviews/B07RS8B5HV/ref=cm_cr_arp_d_paging_btm_next_2?ie=UTF8&reviewerType=all_reviews&pageNumber={}&sortBy=recent".format(num)
r = requests.get(url, headers = headers)
soup = BeautifulSoup(r.content, 'lxml')
for ratings in soup.find_all("div", attrs={"data-hook": "review"}):
submission_date = ratings.find("span", {'data-hook':'review-date'}).text
rating = ratings.find('i', attrs={"data-hook": "review-star-rating"}).text
paid = ratings.find("span", attrs={"class": "a-color-success a-text-bold"})
if paid in ratings:
vine.append("Paid")
else:
vine.append("Not-paid")
date_list.append(submission_date)
rating_list.append(rating)
data = {'Rating':rating_list, 'Date':date_list, "Paid":vine}
time.sleep(2)
df = pd.DataFrame(data)
df["Date"] = pd.to_datetime(df["Date"])
df = df.sort_values(by="Date", ascending=False)
print(df)
Это то, что я так далеко.Обзор 2 и 3 - Vine Voice, но они помечены как неоплаченные, но должны быть оплачены.
0 5.0 out of 5 stars 2019-09-18 Not-paid
1 4.0 out of 5 stars 2019-09-13 Not-paid
2 5.0 out of 5 stars 2019-09-12 Not-paid
3 5.0 out of 5 stars 2019-09-11 Not-paid
4 5.0 out of 5 stars 2019-09-10 Not-paid
...