W tym artykule omówiono metodę skrobania Pinteresta przy użyciu Pythona i Playwright, solidnej biblioteki automatyzacji. Pinterest, znany z bogatej zawartości wizualnej, służy jako podatny grunt do analizy danych lub inicjatyw automatyzacji. W szczególności wyodrębnianie adresów URL obrazów z wyników wyszukiwania może mieć kluczowe znaczenie dla badań lub przedsięwzięć komercyjnych.
Playwright ułatwia automatyzację interaktywnych sesji w wielu przeglądarkach. Posiada takie funkcje, jak przechwytywanie żądań sieciowych, co pozwala na bezpośrednią ekstrakcję danych z ruchu. Dodatkowo, jego zdolność do działania w trybie no-render zwiększa wydajność i skalowalność skrobania. Korzystanie z serwerów proxy, choć opcjonalne, jest zalecane w celu zapewnienia anonimowości i obejścia potencjalnych blokad, tym samym umacniając Playwright jako preferowane narzędzie do zbierania treści wizualnych z Pinteresta.
Zanim zaczniemy, musisz zainstalować Playwright w swoim środowisku Python. Można to zrobić za pomocą pip:
pip install playwright
Po instalacji należy zainstalować pliki binarne przeglądarki:
playwright install
Przyjrzyjmy się teraz podstawowemu skryptowi do skrobania adresów URL obrazów z Pinteresta.
Skrypt, którego pełną wersję prezentujemy poniżej, zawiera następujące elementy:
Główna funkcja tworzy adres URL zapytania wyszukiwania Pinterest na podstawie danych wprowadzonych przez użytkownika, np. https://in.pinterest.com/search/pins/?q=halloween%20decor, a następnie przekazuje go do funkcji capture_images_from_pinterest.
Strona Playwright nasłuchuje odpowiedzi sieciowych za pomocą page.on('response', ...).
Funkcja handle_response filtruje odpowiedzi sieciowe, zapewniając, że przechwytywane są tylko te z obrazami typu zasobu i adresami URL kończącymi się na .jpg.
Po zebraniu adresów URL obrazów zapisujemy je w pliku CSV o nazwie pinterest_images.csv, dzięki czemu zeskrobane dane można łatwo eksportować i analizować.
Oto kod Pythona, który pobiera wyniki wyszukiwania Pinterest i wyodrębnia wszystkie adresy URL obrazów:
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()
# Przechowywanie adresów URL obrazów z końcówką ".jpg"
image_urls = []
# Funkcja przechwytywania i przetwarzania odpowiedzi sieciowych
page.on('response', lambda response: handle_response(response, image_urls))
# Przejdź do adresu URL
await page.goto(url)
# Poczekaj, aż aktywność sieciowa ustabilizuje się (w razie potrzeby dostosuj).
await page.wait_for_timeout(10000)
# Zamknij przeglądarkę
await browser.close()
return image_urls
# Funkcja obsługi do sprawdzania adresów URL obrazów .jpg
def handle_response(response, image_urls):
if response.request.resource_type == 'image':
url = response.url
if url.endswith('.jpg'):
image_urls.append(url)
# Główna funkcja uruchamiająca zadanie asynchroniczne
async def main(query):
url = f"https://in.pinterest.com/search/pins/?q={query}"
images = await capture_images_from_pinterest(url)
# Zapisywanie obrazów do pliku 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")
# Uruchom główną funkcję asynchroniczną
query = 'halloween decor'
asyncio.run(main(query))
Skrobanie Pinterest może powodować ograniczenie szybkości lub nawet bany, jeśli wykonasz zbyt wiele żądań z tego samego adresu IP. Serwery proxy pomagają złagodzić ten problem, przekierowując żądania przez różne adresy IP, dzięki czemu wydaje się, że wielu użytkowników przegląda Pinterest.
Dlaczego warto korzystać z serwerów proxy:
Możesz łatwo skonfigurować serwery proxy w Playwright, używając argumentu proxy w metodzie uruchamiania. W tym przykładzie zastąp "http://your-proxy-address:port" adresem serwera proxy, numerem portu i danymi uwierzytelniającymi serwera proxy.
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
# Dodaj pełnomocnika tutaj
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
page = await browser.new_page()
W rezultacie integracja Playwright z proxy zwiększa skuteczność automatyzacji scrapingu. Takie połączenie nie tylko zmniejsza ryzyko stwarzane przez mechanizmy antybotowe, ale także zwiększa ogólną wydajność procesów gromadzenia danych.
Istnieje kilka wyzwań, które użytkownicy mogą napotkać podczas korzystania z Playwright do skrobania danych z Pinteresta:
Wykorzystanie Playwright z serwerami proxy i w trybie headless może skutecznie złagodzić te wyzwania, zmniejszając ryzyko blokad i zwiększając wydajność ekstrakcji danych.
Komentarze: 0