Парсинг авито Python
Проблема с парсингом последующих страниц, в том варианте, до которого я допер, могу выдернуть только первую страницу, если использовать этот вариант pagination = soup.find('div', class_='pagination-root-2oCjZ'), то все вроде хорошо, выводится весь список страниц в html, но как их выдернуть я не понимаю...
Сама страниц - https://www.avito.ru/murmanskaya_oblast/avtomobili/mitsubishi-ASgBAgICAUTgtg3ymCg?cd=1
import requests
from bs4 import BeautifulSoup
def get_pages_count(html):
soup = BeautifulSoup(html, 'html.parser')
pagination = soup.find('span', class_='pagination-item-1WyVp').findNext('span')['data-marker']
if pagination:
return int(pagination[-2])
else:
return 1
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={"p": page})
cars.extend(get_content(html.text))
print(cars)
else:
print('Error')
parse()
Ответы (3 шт):
URL = "https://www.avito.ru/murmanskaya_oblast/avtomobili/mitsubishi-ASgBAgICAUTgtg3ymCg?cd=1&p="
#Так выглядит твоя ссылка
#И на каждом шаге цикла меняй свой url
for page in range(1, pages_count + 1):
html = get_html(URL + str(page))
# и далее твоя логика
В общем, к-во страниц я посчитал так
def get_pages_count(html):
soup = BeautifulSoup(html, 'html.parser')
pagination = soup.find('div', class_='pagination-root-2oCjZ')
line = pagination.text
p_count = line[-8]
print(p_count)
Естественно вместо print поставить return, это касается конкретно авито на момент написания. Возможно будет проблема когда страница будет одна, тк. в этом случае снизу страницы не будет их кол-ва вообще.
Можно попробовать по ссылке ниже получить список объявлений, а дальше уже посчитать количество items в json просто. Не забывай прописывать headers и куки, дабы сайт не заблочил
Вот тут есть статья как парсить авито, чтобы не забанили - правда только про номер телефона, но все же кое что полезное там есть.
Вообще парсить Авито через html дело неблагодарное