@fuad_971

Почему парсер на Python повторно парсит начальную страницу, в количестве указываемом при пагинации?

import requests
from bs4 import BeautifulSoup

HOST = 'https://mir-vuzov.ru/'
URL = 'https://mir-vuzov.ru/top'
HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
}

def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='itemContainer')


    vuz = []
    for item in items:
        vuz.append({
            'title': item.find('div', class_='catItemView').find('div', class_='catItemBody').find('div', class_='content-intro').find('div', class_='catItemHeader').find('h2').get_text(strip=True) ,
            'region' : item.find('div', class_='catItemView').find('div', class_='catItemBody').find('div', class_='content-intro').find('div', class_='specialization').get_text(strip=True) ,
            'link' :  HOST + item.find('div', class_='catItemView').find('div', class_='catItemBody').find('div', class_='catItemImageBlock').find('a').get('href')
        })
    return vuz

def parse():
    PAGENATION = input('Количество страниц: ')
    PAGENATION = int(PAGENATION.strip())
    html = get_html(URL)
    if html.status_code == 200:
        vuz = []
        for page in range (1, PAGENATION+1):
            print(f'Идет парсинг странцицы {page}')
            html= get_html(URL, params={'start' : page})
            vuz.extend(get_content(html.text))
        print(vuz)
        print(len(vuz))
    else:
        print('Error')


parse()


Этот код парсит начальную страницу по нескольку раз, при этом не переходит к последующим страницам. В итоге выдает повтор названий вузов только с 1 страницы. Прошу указать причину данной ошибки
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Я не знаю куда ты смотрел, но ты явно не заметил, что ссылка на вторую страницу имеет вид https://mir-vuzov.ru/top?start=10, и добавляет 10 на каждую следующую страницу.
И да, если проверить, ссылка на 11, 12 и т.п. открывает ту же страницу, что и ссылка на 10.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы