У цій статті розглядається процес вилучення даних з Pinterest з використанням Python і бібліотеки Playwright. Pinterest - платформа, орієнтована на візуальний контент, яка являє собою значуще джерело для проектів з аналізу даних або автоматизації. Процес вилучення URL-адрес зображень із результатів пошуку може слугувати цінним ресурсом для досліджень або бізнес-проектів.
Застосування Playwright дає змогу автоматизувати інтерактивні сесії в різних браузерах, включно з можливостями перехоплення мережевих запитів для вилучення даних безпосередньо та роботою в режимі без відмальовування інтерфейсу, що забезпечує ефективність при виконанні скрапінгу та його масштабуванні. Додаткове використання проксі забезпечує анонімність і допомагає уникнути блокувань, роблячи Playwright ідеальним інструментом для вилучення візуального контенту з Pinterest.
Перед початком роботи необхідно встановити Playwright у ваше середовище Python. Встановлення здійснюється за допомогою pip:
pip install playwright
Після встановлення вам потрібно буде встановити бінарні файли браузера:
playwright install
Тепер розглянемо базовий скрипт для вилучення URL-адрес зображень з Pinterest.
Скрипт, повну версію якого представлено нижче, містить у собі такі елементи:
Основна функція генерує URL для пошукового запиту на Pinterest, ґрунтуючись на користувацькому введенні, наприклад, https://in.pinterest.com/search/pins/?q=halloween%20decor. Цей URL потім використовується для виклику функції capture_images_from_pinterest, яка відповідає за скрапінг даних.
У процесі роботи сторінка, керована бібліотекою Playwright, активно обробляє вхідні мережеві відповіді за допомогою обробника page.on('response', ...). Функція handle_response займається фільтрацією відповідей, пропускаючи далі тільки ті, які відповідають зображенням, що закінчуються на .jpg, забезпечуючи тим самим точність збору даних.
Зібрані 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))
При активному скрапінгу Pinterest часті запити з однієї IP-адреси можуть призвести до обмежень за частотою запитів або блокування. Застосування проксі-серверів дозволяє ефективно обходити ці обмеження, розподіляючи запити через різні IP-адреси, імітуючи, що доступ до сайту здійснюється різними користувачами.
Причини використання проксі:
Проксі можна налаштувати в 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 у поєднанні з проксі значно покращує процеси автоматизації скрапінгу, роблячи їх більш стійкими до антиботових механізмів і збільшуючи загальну продуктивність збору даних.
Під час використання Playwright для скрапінгу даних з Pinterest користувачі можуть зіткнутися з кількома складнощами:
Використовуючи Playwright разом із проксі та режимом без відтворення інтерфейсу, можна ефективно впоратися з цими викликами.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Коментарі: 0