Comment récupérer les données de Pinterest à l'aide de Python

Commentaires: 0

Cet article explore la méthode de scraping de Pinterest à l'aide de Python et de Playwright, une bibliothèque d'automatisation robuste. Pinterest, connu pour son riche contenu visuel, est un terrain fertile pour l'analyse de données ou les initiatives d'automatisation. Plus précisément, l'extraction d'URL d'images à partir des résultats de recherche peut s'avérer cruciale pour la recherche ou les projets commerciaux.

Playwright facilite l'automatisation des sessions interactives sur plusieurs navigateurs. Il est doté de fonctionnalités telles que l'interception des requêtes réseau, ce qui permet d'extraire directement des données du trafic. En outre, sa capacité à fonctionner en mode "no-render" améliore l'efficacité et l'évolutivité du scraping. L'utilisation de proxys, bien que facultative, est recommandée pour garantir l'anonymat et aider à contourner les blocages potentiels, consolidant ainsi Playwright en tant qu'outil privilégié pour la collecte de contenu visuel sur Pinterest.

Configuration de Playwright pour Python

Avant de commencer, vous devez installer Playwright dans votre environnement Python. Vous pouvez l'installer à l'aide de pip :


pip install playwright

Une fois installé, vous devrez installer les binaires du navigateur :


playwright install

Voyons maintenant un script de base pour récupérer les URL des images Pinterest.

Processus d'extraction des données de Pinterest

Le scénario, dont la version complète est présentée ci-dessous, comprend les éléments suivants :

Fonction principale

La fonction principale construit une URL de recherche Pinterest basée sur les données de l'utilisateur, par exemple https://in.pinterest.com/search/pins/?q=halloween%20decor, et la transmet à la fonction capture_images_from_pinterest.

Interception et filtrage

La page Playwright écoute les réponses du réseau en utilisant page.on('response', ...).

La fonction handle_response filtre les réponses du réseau, en veillant à ce que seules les réponses contenant des images de type ressource et des URL se terminant par .jpg soient capturées.

Enregistrement des données au format CSV

Après avoir collecté les URL des images, nous les enregistrons dans un fichier CSV nommé pinterest_images.csv, ce qui permet d'exporter et d'analyser facilement les données récupérées.

Code complet

Voici le code Python qui récupère les résultats de recherche de Pinterest et extrait toutes les URL des images :


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

        # Stocker les URL des images avec la terminaison '.jpg'
        image_urls = []

        # Fonction d'interception et de traitement des réponses du réseau
        page.on('response', lambda response: handle_response(response, image_urls))

        # Naviguer vers l'URL
        await page.goto(url)

        # Attendre que l'activité du réseau se stabilise (ajuster si nécessaire)
        await page.wait_for_timeout(10000)

        # Fermer le navigateur
        await browser.close()

        return image_urls

# Fonction de gestion pour vérifier les URL d'images .jpg
def handle_response(response, image_urls):
    if response.request.resource_type == 'image':
        url = response.url
        if url.endswith('.jpg'):
            image_urls.append(url)

# Fonction principale pour exécuter la tâche asynchrone
async def main(query):
    url = f"https://in.pinterest.com/search/pins/?q={query}"
    images = await capture_images_from_pinterest(url)
    
    # Enregistrer les images dans un fichier 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")

# Exécuter la fonction principale asynchrone
query = 'halloween decor'
asyncio.run(main(query))

Mise en place de proxies dans Playwright

Le scraping de Pinterest peut déclencher une limitation de taux ou même des interdictions si vous faites trop de requêtes à partir de la même adresse IP. Les proxys permettent d'atténuer ce problème en acheminant vos demandes via différentes adresses IP, ce qui donne l'impression que plusieurs utilisateurs naviguent sur Pinterest.

Pourquoi utiliser des proxys :

  • Évitez les interdictions d'IP : Pinterest peut bloquer temporairement votre adresse IP s'il détecte une activité inhabituelle. Les proxys permettent d'éviter ce problème en faisant tourner les adresses IP.
  • Évolutivité : L'utilisation de proxys permet d'étendre les efforts de scraping, en minimisant le risque de blocage.
  • Augmenter les limites de requête : L'utilisation de proxies vous permet de récupérer plus de données sans déclencher de limites de taux.

Vous pouvez facilement configurer des serveurs mandataires avec Playwright en utilisant l'argument proxy dans la méthode de lancement. Dans cet exemple, remplacez "http://your-proxy-address:port" par l'adresse de votre serveur proxy, le numéro de port et les informations d'identification du proxy.


async def capture_images_from_pinterest(url):
    async with async_playwright() as p:
        # Ajouter une procuration ici
        browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
        page = await browser.new_page()

Par conséquent, l'intégration de Playwright avec un proxy améliore l'efficacité de l'automatisation du scraping. Cette combinaison permet non seulement d'atténuer les risques posés par les mécanismes anti-bots, mais aussi de renforcer l'efficacité globale des processus de collecte de données.

Les défis de l'extraction des données de Pinterest

Les utilisateurs peuvent être confrontés à plusieurs difficultés lorsqu'ils utilisent Playwright pour récupérer les données de Pinterest :

  • Chargement de contenu dynamique : Pinterest utilise des techniques de chargement de contenu dynamique, notamment le défilement infini et les images chargées paresseusement. Cela nécessite des outils de scraping capables de gérer efficacement le chargement asynchrone des données.
  • Mesures anti-scraping : des sites web comme Pinterest utilisent divers mécanismes anti-scraping, tels que la limitation du taux, pour entraver les efforts d'extraction automatisée de données.

L'utilisation de Playwright avec des proxies et en mode sans tête peut atténuer efficacement ces défis, en réduisant le risque de blocages et en améliorant l'efficacité de l'extraction des données.

Commentaires:

0 Commentaires