Как скрапить данные с Pinterest с использованием Python

Комментарии: 0

В данной статье рассматривается процесс извлечения данных с Pinterest с использованием Python и библиотеки Playwright. Pinterest — платформа, ориентированная на визуальный контент, которая представляет собой значимый источник для проектов по анализу данных или автоматизации. Процесс извлечения URL-адресов изображений из результатов поиска может служить ценным ресурсом для исследований или бизнес-проектов.

Применение Playwright позволяет автоматизировать интерактивные сессии в разных браузерах, включая возможности перехвата сетевых запросов для извлечения данных напрямую и работу в режиме без отрисовки интерфейса, что обеспечивает эффективность при выполнении скрапинга и его масштабировании. Дополнительное использование прокси обеспечивает анонимность и помогает избежать блокировок, делая Playwright идеальным инструментом для извлечения визуального контента с Pinterest.

Предварительные установки

Перед началом работы необходимо установить Playwright в вашу среду Python. Установка осуществляется с помощью pip:


pip install playwright

После установки вам нужно будет установить бинарные файлы браузера:


playwright install

Теперь рассмотрим базовый скрипт для извлечения URL-адресов изображений с Pinterest.

Процесс извлечения данных с Pinterest

Скрипт, полная версия которого представлена ниже, содержит в себе такие элементы:

Основная функция

Основная функция генерирует URL для поискового запроса на Pinterest, основываясь на пользовательском вводе, например, https://in.pinterest.com/search/pins/?q=halloween%20decor. Этот URL затем используется для вызова функции capture_images_from_pinterest, которая отвечает за скрапинг данных.

Перехват и фильтрация

В процессе работы страница, управляемая библиотекой Playwright, активно обрабатывает входящие сетевые ответы с помощью обработчика page.on('response', ...). Функция handle_response занимается фильтрацией ответов, пропуская дальше только те, которые соответствуют изображениям, оканчивающимся на .jpg, обеспечивая тем самым точность сбора данных.

Сохранение данных в CSV

Собранные URL-адреса изображений систематически записываются в файл формата CSV под названием pinterest_images.csv. Это позволяет удобно экспортировать и анализировать данные, делая информацию доступной для дальнейшего использования.

Полный код

Ниже представлен полный код на Python для скрапинга результатов поиска на Pinterest и извлечения URL-адресов всех изображений:


import asyncio
from playwright.async_api import async_playwright

async def capture_images_from_pinterest(url):
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page()

        # Массив для хранения URL изображений с расширением '.jpg'
        image_urls = []

        # Функция для перехвата и обработки сетевых ответов
        page.on('response', lambda response: handle_response(response, image_urls))

        # Переход по URL
        await page.goto(url)

        # Ожидание завершения сетевой активности (настройте по необходимости)
        await page.wait_for_timeout(10000)

        # Закрытие браузера
        await browser.close()

        return image_urls

# Функция обработчика для проверки URL изображений .jpg
def handle_response(response, image_urls):
    if response.request.resource_type == 'image':
        url = response.url
        if url.endswith('.jpg'):
            image_urls.append(url)

# Основная функция для выполнения асинхронной задачи
async def main(query):
    url = f"https://in.pinterest.com/search/pins/?q={query}"
    images = await capture_images_from_pinterest(url)
    
    # Сохранение изображений в файл CSV
    with open('pinterest_images.csv', 'w') as file:
        for img_url in images:
            file.write(f"{img_url}\n")

    print(f"Saved {len(images)} image URLs to pinterest_images.csv")

# Запуск асинхронной основной функции
query = 'halloween decor'
asyncio.run(main(query))

Конфигурация прокси в Playwright для скрапинга Pinterest

При активном скрапинге Pinterest частые запросы с одного IP-адреса могут привести к ограничениям по частоте запросов или блокировке. Применение прокси-серверов позволяет эффективно обходить эти ограничения, распределяя запросы через различные IP-адреса, имитируя, что доступ к сайту осуществляется разными пользователями.

Причины использования прокси:

  • Избегание блокировок IP-адресов: прокси способствуют предотвращению временной блокировки IP-адресов за счет ротации IP, что значительно снижает риск обнаружения необычной активности;
  • Масштабируемость: использование прокси позволяет расширять масштабы скрапинга, минимизируя риски блокировки;
  • Расширение лимитов запросов: с прокси возможно увеличить объем извлекаемых данных без риска активации ограничений Pinterest на количество запросов.

Прокси можно настроить в Playwright с использованием параметра proxy при запуске метода браузера. В данной реализации необходимо указать адрес прокси-сервера, порт, имя пользователя и пароль.


async def capture_images_from_pinterest(url):
    async with async_playwright() as p:
        # Введите данные от прокси сюда
        browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
        page = await browser.new_page()

Как итог, использование Playwright в сочетании с прокси значительно улучшает процессы автоматизации скрапинга, делая их более устойчивыми к антиботовым механизмам и увеличивая общую производительность сбора данных.

Проблемы с которыми можно столкнуться во время скрапинга Pinterest

При использовании Playwright для скрапинга данных с Pinterest пользователи могут столкнуться с несколькими сложностями:

  • Динамическая загрузка контента: Pinterest реализует динамическую загрузку контента, включая бесконечную прокрутку и подгрузку изображений по мере просмотра. Это требует от скрапинг-инструментов возможности адаптироваться к асинхронной загрузке данных;
  • Меры противодействия скрапингу: сайты как Pinterest внедряют механизмы защиты от скрапинга, такие как ограничение частоты запросов, что может затруднить извлечение данных без соответствующих обходных решений.

Используя Playwright вместе с прокси и режимом без отрисовки интерфейса, можно эффективно справиться с этими вызовами.

Комментарии:

0 комментариев