При парсинге данных получаю пустой список
Надо спарсить необходимые данные, они на сайте размещены но при попытке парсинга я получаю пустой список.
from bs4 import BeautifulSoup
URL = 'https://auto.ria.com/uk/legkovie/jeep/'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',
'accept': 'application/json'}
HOST = 'https://auto.ria.com'
def get_html (url, params=None):
r = requests.get(url, headers=HEADERS, params=params)
return r
def get_pages_count(html):
soup = BeautifulSoup(html, 'html.parser')
pagination = soup.find_all('span', class_ = 'page-item mhide')
if pagination:
return int(pagination[4].get_text())
else :
return 1
def get_content(html):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('section', class_='ticket-item new__ticket')
cars = []
for item in items:
cars.append({
'title': item.find('div', class_='item ticket-title').get_text(strip=True)})
return cars
def parse():
html = get_html(URL)
if html.status_code == 200:
cars = []
pages_count = get_pages_count(html.text)
for page in range(1, pages_count + 1):
print(f'Парсинг страницы {page} из {pages_count}...')
html = get_html(URL, params={'page': page})
cars.extend(get_content(html.text))
else:
print('Error')
print(cars)
parse()
ответ:
Парсинг страницы 1 из 5...
Парсинг страницы 2 из 5...
Парсинг страницы 3 из 5...
Парсинг страницы 4 из 5...
Парсинг страницы 5 из 5...
[]
Ответы (2 шт):
Автор решения: Іван Шнір
→ Ссылка
Замените эту строчку items = soup.find_all('section', class_='ticket-item new__ticket')
На эту items = soup.find_all('section', class_='ticket-item')
После пробела в класс нечего не записывается после парсинга в частых случаях.
Автор решения: Alpensin
→ Ссылка
Дополню ответ Ивана. find_all даёт искать по критерию ИЛИ. Если нужно, чтобы обязательно были оба класса, то можно искать так:
items = soup.select('section.ticket-item.new__ticket')