Questo articolo esplora il metodo di scraping di Pinterest utilizzando Python e Playwright, una solida libreria di automazione. Pinterest, noto per i suoi ricchi contenuti visivi, è un terreno fertile per l'analisi dei dati o per le iniziative di automazione. In particolare, l'estrazione di URL di immagini dai risultati di ricerca può essere fondamentale per la ricerca o per le iniziative commerciali.
Playwright facilita l'automazione di sessioni interattive su più browser. Vanta caratteristiche come l'intercettazione delle richieste di rete, che consente l'estrazione diretta dei dati dal traffico. Inoltre, la capacità di operare in modalità no-render migliora l'efficienza e la scalabilità dello scraping. L'uso di proxy, benché facoltativo, è consigliato per garantire l'anonimato e aggirare potenziali blocchi, consolidando così Playwright come strumento preferito per l'estrazione di contenuti visivi da Pinterest.
Prima di iniziare, è necessario installare Playwright nel proprio ambiente Python. È possibile installarlo utilizzando pip:
pip install playwright
Una volta installato, è necessario installare i binari del browser:
playwright install
Vediamo ora uno script di base per raschiare gli URL delle immagini di Pinterest.
Il copione, la cui versione completa è presentata di seguito, comprende i seguenti elementi:
La funzione principale crea un URL per la ricerca su Pinterest in base all'input dell'utente, ad esempio https://in.pinterest.com/search/pins/?q=halloween%20decor, e lo passa alla funzione capture_images_from_pinterest.
La pagina Playwright ascolta le risposte della rete utilizzando page.on('response', ...).
La funzione handle_response filtra le risposte di rete, assicurando che vengano catturate solo quelle con immagini di tipo risorsa e URL che terminano con .jpg.
Dopo aver raccolto gli URL delle immagini, li salviamo in un file CSV chiamato pinterest_images.csv, rendendo i dati scraped facili da esportare e analizzare.
Ecco il codice Python che esegue lo scrapping dei risultati di ricerca di Pinterest ed estrae tutti gli URL delle immagini:
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()
# Memorizzare gli URL delle immagini con estensione '.jpg'
image_urls = []
# Funzione per intercettare ed elaborare le risposte della rete
page.on('response', lambda response: handle_response(response, image_urls))
# Navigare verso l'URL
await page.goto(url)
# Attendere che l'attività di rete si stabilizzi (regolare se necessario).
await page.wait_for_timeout(10000)
# Chiudere il browser
await browser.close()
return image_urls
# Funzione di gestione per controllare gli URL delle immagini .jpg
def handle_response(response, image_urls):
if response.request.resource_type == 'image':
url = response.url
if url.endswith('.jpg'):
image_urls.append(url)
# Funzione principale per eseguire il task asincrono
async def main(query):
url = f"https://in.pinterest.com/search/pins/?q={query}"
images = await capture_images_from_pinterest(url)
# Salvare le immagini in un file 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")
# Eseguire la funzione main async
query = 'halloween decor'
asyncio.run(main(query))
Lo scraping di Pinterest può causare limitazioni di velocità o addirittura divieti se si effettuano troppe richieste dallo stesso indirizzo IP. I proxy aiutano a mitigare questo problema instradando le richieste attraverso indirizzi IP diversi, facendo sembrare che più utenti stiano navigando su Pinterest.
Perché usare i proxy:
È possibile impostare facilmente i proxy con Playwright utilizzando l'argomento proxy nel metodo di lancio. In questo esempio, sostituire "http://your-proxy-address:port" con l'indirizzo, il numero di porta e le credenziali del server proxy.
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
# Aggiungi proxy qui
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
page = await browser.new_page()
Di conseguenza, l'integrazione di Playwright con un proxy aumenta l'efficacia dell'automazione dello scraping. Questa combinazione non solo attenua i rischi posti dai meccanismi anti-bot, ma aumenta anche l'efficienza complessiva dei processi di raccolta dei dati.
Ci sono diverse sfide che gli utenti possono incontrare quando usano Playwright per raschiare i dati di Pinterest:
L'utilizzo di Playwright con i proxy e in modalità headless può mitigare efficacemente queste sfide, riducendo il rischio di blocchi e migliorando l'efficienza dell'estrazione dei dati.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Commenti: 0