Вот мой сценарий:
Код: Выделить всё
import re
import json
import requests
from requests import get
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import datetime
import time
import random
root_url = 'https://www.tripadvisor.ca/Hotel_Review-g60982-d87016-Reviews-or'
urls = [ '{root}{i}-Hilton_Hawaiian_Village_Waikiki_Beach_Resort-Honolulu_Oahu_Hawaii.html'.format(root=root_url, i=i) for i in range(5,20,5) ]
comms = []
notes = []
dates = []
for url in urls:
results = requests.get(url)
#time.sleep(20)
soup = BeautifulSoup(results.text, "html.parser")
commentary = soup.find_all('div', class_='oETBfkHU')
for container in commentary:
comm = container.find('q', class_ = 'IRsGHoPm').text.strip()
comms.append(comm)
date_tag = container.find("span", class_="_355y0nZn").text.strip()
dates.append(date_tag)
data = pd.DataFrame({
'comms' : comms,
'dates' : dates
})
#print(data.head())
data.to_csv('file.csv', sep=';', index=False)

Я не удивлен, date_tag указан не совсем точно, но я не понимаю, как выбрать правильный текст.Вот HTML :

«Март 2020 года» вообще не имеет класса, поэтому я подумал, что если я укажу контейнер.find("span", class_="_355y0nZn").text.strip(), он будет работать, но нет, это не так.< /p>
И последнее: я не знаю, как оценить рейтинг, давайте посмотрим html:
[img]https:// i.sstatic.net/gaaSg.png[/img]
Как видите, текста вообще нет. Я думаю, что рейтинг работает с ui_bubble_rating bubble_50, где 50 — это рейтинг (5). Как это поцарапать? Я никогда раньше не видел такой структуры.
Есть идеи?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/654 ... utifulsoup