Написал код для парсинга сайта по аренде автомобилей (rentride). Проблема в том, что парсер не считывает все страницы, либо идет какой-то бесконечный цикл + не все записывается в json (max 3 строки). Также не могу спарсить цену, тк у цены нет класса.
Ниже прикладываю мой код, HTML-разметку цены и скрины результата парсинга.
Вот код парсера:
import requests
from bs4 import BeautifulSoup
import json
url = 'https://rentride.ru/arendovat/moskva/'
params = {'page': 1}
pages = 25
n = 1
while params['page'] <= pages:
response = requests.get(url, params=params)
soup = BeautifulSoup(response.text, 'lxml')
infos = soup.find_all('div', class_='main-info')
for n, i in enumerate(infos, start=n):
data_dict = []
name = i.find('h4', class_='title-car').text.strip()
stars = i.find('div', class_='rating-value').text
comments = i.find('div', class_='car-review-count').text.strip()
price = i.find('div', class_='car-price-info')
print(f'{n}: {name} за {price} с оценкой {stars} и количеством отзывов:{comments}')
last_page_num = int(soup.find_all('a', class_='no-decoration pagination-number-item')[-1].text)
pages = last_page_num if pages < last_page_num else pages
params['page'] +=1
data = {
'car': name,
'price': price,
'stars': stars,
'comments': comments,
}
data_dict.append(data)
with open('data_2.json', 'w') as json_file:
json.dump(data_dict, json_file, indent=5)
HTML-разметка цены:
<div class="car-price-info"><div class="price-per-day"><span>от
1900 ₽ <span class="period">/ сутки</span></span> <!----></div> <!----></div>
Результат парсинга: