Как работать с разбиением страниц (пагинацией) при парсинге данных?

Как можно использовать Python для перехода по страницам пагинации на сайте "https://www.ursus.ru/catalogue/zashchita_ot_padeni..." и извлечения информации о товарах? Мне нужна помощь в интеграции этого кода для обхода каталога и пагинации.
  • 14 декабря 2023 г. 22:46
Ответы на вопрос 2
Для работы с разбиением страниц (пагинацией) при парсинге данных вам понадобится использовать библиотеку requests для отправки HTTP-запросов, и библиотеку BeautifulSoup для парсинга HTML-страниц. 

Вот пример кода на Python, который позволяет переходить по страницам пагинации на указанном сайте и извлекать информацию о товарах:

```python
import requests
from bs4 import BeautifulSoup

# Функция для получения HTML-кода страницы
def get_page(url):
    response = requests.get(url)
    return response.text

# Функция для парсинга страницы и извлечения информации о товарах
def parse_page(html):
    soup = BeautifulSoup(html, 'html.parser')

    # Здесь указываете нужные селекторы для извлечения данных о товарах
    # Например:
    products = soup.select('.product')

    for product in products:
        # Извлекаем информацию о товаре
        name = product.select_one('.product-name').text.strip()
        price = product.select_one('.product-price').text.strip()
        
        # Выводим информацию о товаре
        print(name, price)
        
# Главная функция для обхода каталога и пагинации
def scrape_catalog(url):
    page = 1
    while True:
        # Составляем URL страницы пагинации
        page_url = url + f'?page={page}'

        # Получаем HTML-код страницы
        html = get_page(page_url)

        # Проверяем, есть ли товары на странице
        soup = BeautifulSoup(html, 'html.parser')
        no_products = soup.select_one('.no-products')
        if no_products:
            # Прерываем цикл, если товары закончились
            break

        # Парсим страницу и извлекаем информацию о товарах
        parse_page(html)

        # Увеличиваем номер страницы для перехода на следующую страницу пагинации
        page += 1

# Задаем URL каталога
catalog_url = 'https://www.ursus.ru/catalogue/zashchita_ot_padeni'

# Вызываем главную функцию
scrape_catalog(catalog_url)
```

Пример кода реализует функции get_page() для получения HTML-кода страницы, parse_page() для парсинга страницы и извлечения информации о товарах, и scrape_catalog() для обхода каталога и пагинации. Внутри главной функции используется цикл while для перехода по страницам пагинации и вызова нужных функций для каждой страницы.

Вы можете изменить селекторы в функции parse_page() в соответствии с требуемой структурой HTML-кода на сайте "https://www.ursus.ru/catalogue/zashchita_ot_padeni" для получения нужных данных о товарах.
Узнаешь сколько страниц. 
и тупо перебираешь урл с page-1, page-2, page-3 ... page-8 в вашем случае

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