Як скрапити дані з 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 Коментаріїв