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.
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.
Le scénario, dont la version complète est présentée ci-dessous, comprend les éléments suivants :
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.
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.
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.
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))
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 :
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 utilisateurs peuvent être confrontés à plusieurs difficultés lorsqu'ils utilisent Playwright pour récupérer les données de Pinterest :
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.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Commentaires: 0