Come raschiare i dati di Pinterest con Python

Commenti: 0

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.

Configurazione di Playwright per Python

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 processo di estrazione dei dati da Pinterest

Il copione, la cui versione completa è presentata di seguito, comprende i seguenti elementi:

Funzione principale

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.

Intercettazione e filtraggio

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.

Salvataggio dei dati in CSV

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.

Codice completo

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))

Impostazione dei proxy in Playwright

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:

  • Evitare i divieti IP: Pinterest può bloccare temporaneamente il vostro indirizzo IP se rileva un'attività insolita. I proxy aiutano a evitare questo problema grazie alla rotazione degli indirizzi IP.
  • Scalabilità: L'uso dei proxy consente di scalare gli sforzi di scraping, riducendo al minimo il rischio di blocco.
  • Aumentare i limiti di richiesta: L'utilizzo dei proxy consente di effettuare lo scraping di un maggior numero di dati senza che si attivino i limiti di velocità.

È 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.

Le sfide dello scraping dei dati di Pinterest

Ci sono diverse sfide che gli utenti possono incontrare quando usano Playwright per raschiare i dati di Pinterest:

  • Caricamento dinamico dei contenuti: Pinterest utilizza tecniche di caricamento dinamico dei contenuti, tra cui lo scorrimento infinito e il caricamento pigro delle immagini. Ciò richiede strumenti di scraping in grado di gestire efficacemente il caricamento asincrono dei dati.
  • Misure anti-scraping: siti web come Pinterest impiegano vari meccanismi anti-scraping, come la limitazione della velocità, per ostacolare i tentativi di estrazione automatica dei dati.

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.

Commenti:

0 Commenti