Dans ce guide, vous apprendrez :
- Qu’est-ce que Pydoll et quelles sont ses fonctionnalités ?
- Comment l’utiliser pour récupérer des sites web alimentés par JavaScript ?
- Comment contourner la protection de Cloudflare
- Ses principales limites
- Comment surmonter ces limitations en utilisant l’intégration d’un proxy rotatif
- Les meilleures alternatives à Pydoll basées sur Python
Plongeons dans l’aventure !
Introduction à Pydoll
Découvrez ce qu’est Pydoll, comment il fonctionne, et ce qu’il offre en tant que bibliothèque Python de web scraping.
Qu’est-ce que c’est ?
Pydoll est une bibliothèque d’automatisation de navigateur Python conçue pour le scraping web, les tests et l’automatisation des tâches répétitives. Ce qui la distingue, c’est qu’elle élimine le besoin de pilotes web traditionnels. En effet, elle se connecte directement aux navigateurs via le protocole DevTools – aucune dépendance externe n’est nécessaire.
La première version stable de Pydoll, la version 1.0, a été lancée en février 2025. Il s’agit donc d’un acteur relativement nouveau dans le domaine du web scraping. Malgré cela, il a déjà gagné du terrain, obtenant plus de 3 000 étoiles sur GitHub:
Comme vous pouvez le constater, la bibliothèque gagne en popularité dans la communauté Python du web scraping.
Caractéristiques
Voici un résumé des principales fonctionnalités offertes par Pydoll :
- Zéro pilote web: Élimine la dépendance à l’égard des pilotes de navigateur, ce qui réduit les problèmes d’incompatibilité des versions et simplifie la configuration de l’automatisation basée sur Chromium.
- Architecture asynchrone: Construit entièrement sur asyncio pour une concurrence élevée, une utilisation efficace de la mémoire, et des modèles de développement Python modernes.
- Interactions de type humain: Imite la frappe, les mouvements de souris et les clics de manière réaliste afin de réduire la détection des robots pendant l’automatisation.
- Capacités axées sur les événements: Permet de réagir en temps réel aux événements du navigateur, du DOM, du réseau et du cycle de vie pour une automatisation réactive.
- Prise en charge de plusieurs navigateurs : Compatible avec Chrome, Edge et d’autres navigateurs Chromium utilisant la même interface unifiée.
- Capture d’écran et exportation au format PDF: Capturez des pages entières, des éléments spécifiques ou générez des PDF de haute qualité à partir de n’importe quelle page web chargée.
- Contournement natif de Cloudflare: Contournement automatique de l’anti-bot de Cloudflare sans services tiers, imitant les sessions de navigation de confiance lorsque la réputation de l’IP est élevée.
- Récupération simultanée: Scrape plusieurs pages ou sites web en parallèle, ce qui réduit considérablement le temps d’exécution total.
- Contrôle avancé du clavier: Simule la frappe d’un utilisateur réel avec un contrôle précis de la synchronisation, des modificateurs et de la gestion des touches spéciales.
- Système d’événements puissant: Il permet de surveiller et de traiter en temps réel les demandes du réseau, les chargements de pages et les événements personnalisés du navigateur.
- Prise en charge du téléchargement de fichiers: Automatise le téléchargement de fichiers en utilisant à la fois la saisie directe et les boîtes de dialogue interactives de sélection de fichiers.
- Intégration de proxy: Prise en charge de l’utilisation d’un proxy pour la rotation des IP, le ciblage géographique ou pour éviter les limites de débit pendant le scraping.
- Interception des requêtes: Interception, modification ou blocage des demandes et réponses HTTP pour une automatisation avancée et un contrôle du scraping.
Pour en savoir plus, consultez la documentation officielle.
Utiliser Pydoll pour le Web Scraping : Tutoriel complet
Dans cette section du tutoriel, vous apprendrez à utiliser Pydoll pour récupérer des données à partir de la version asynchrone, alimentée par JavaScript, de “Quotes to Scrape” :
Cette page rend dynamiquement les éléments de citation à l’aide de JavaScript après un court délai. Par conséquent, les outils de scraping traditionnels ne fonctionneront pas d’emblée. Pour extraire le contenu de cette page, vous avez besoin d’un outil d’automatisation de navigateur comme Pydoll.
Suivez les étapes ci-dessous pour créer un scraper web Pydoll qui extrait dynamiquement les données des citations à partir de “Citations à extraire”.
Étape 1 : Configuration du projet
Avant de commencer, assurez-vous que Python 3+ est installé sur votre machine. Sinon, téléchargez-le et suivez les instructions d’installation.
Ensuite, exécutez la commande suivante pour créer un dossier pour votre projet de scraping :
mkdir pydoll-scraper
Le répertoire pydoll-scraper
servira de dossier de projet.
Naviguez vers le dossier dans votre terminal et initialisez un environnement virtuel Python à l’intérieur :
cd pydoll-scraper
python -m venv venv
Chargez le dossier du projet dans votre IDE Python préféré. Visual Studio Code avec l’extension Python ou PyCharm Community Edition feront l’affaire.
Créer un fichier scraper.py
dans le dossier du projet, qui devrait maintenant contenir :
À ce stade, scraper.py
n’est qu’un script Python vide. Cependant, il contiendra bientôt la logique d’analyse des données.
Ensuite, activez l’environnement virtuel dans le terminal de votre IDE. Sous Linux ou macOS, exécutez :
source venv/bin/activate
De manière équivalente, sous Windows, lancez :
venv/Scripts/activate
C’est formidable ! Votre environnement Python est maintenant prêt pour le web scraping avec Pydoll.
Étape 2 : Configurer Pydoll
Dans un environnement virtuel activé, installez Pydoll via le paquet pydoll-python
:
pip install pydoll-python
Maintenant, ajoutez la logique ci-dessous au fichier scraper.py
pour commencer à utiliser Pydoll :
import asyncio
from pydoll.browser.chrome import Chrome
async def main():
async with Chrome() as browser:
# Launch the Chrome browser and open a new page
await browser.start()
page = await browser.get_page()
# scraping logic...
# Execute the async scraping function
asyncio.run(main())
Pydoll fournit une API asynchrone pour le web scraping et nécessite l’utilisation de la bibliothèque standard asyncio
de Python.
C’est très bien ! Vous avez maintenant un script Pydoll de base en place.
Étape 3 : Connexion au site cible
Appeler la méthode go_to()
fournie par l’objet page
pour naviguer vers le site cible :
await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")
Le paramètre de requête ?delay=2000
demande à la page de charger les données souhaitées de manière dynamique après un délai de 2 secondes. Il s’agit d’une fonctionnalité du site cible “sandbox”, conçue pour aider à tester le comportement dynamique du “scraping”.
Maintenant, essayez d’exécuter le script ci-dessus. Si tout fonctionne correctement, Pydoll le fera :
- Lancer une instance de Chrome
- Naviguer vers le site cible
- Fermez immédiatement la fenêtre du navigateur, car il n’y a pas encore de logique supplémentaire dans le script.
Plus précisément, voici ce que vous devriez pouvoir voir avant qu’il ne soit fermé :
C’est parfait ! Vous êtes prêt à ajouter la logique d’attente.
Étape 4 : Attendre l’apparition des éléments HTML
Regardez la dernière image de l’étape précédente. Elle représente le contenu de la page contrôlée par Pydoll dans l’instance Chrome. Vous remarquerez qu’elle est complètement vide – aucune donnée n’a été chargée.
La raison en est que le site cible rend dynamiquement les données après un délai de 2 secondes. Ce délai est spécifique au site de l’exemple. Néanmoins, le fait de devoir attendre que la page soit rendue est un scénario courant lors du scraping de SPA (applications à page unique) et d’autres sites web dynamiques qui s’appuient sur AJAX.
Pour en savoir plus, consultez notre article sur le scraping de sites web dynamiques avec Python.
Pour faire face à ce scénario courant, Pydoll fournit des mécanismes d’attente intégrés via cette méthode :
wait_element()
: Attend l’apparition d’un seul élément (avec prise en charge du délai d’attente)
La méthode ci-dessus prend en charge les sélecteurs CSS, les expressions XPath et d’autres éléments similaires au fonctionnement de l’objet By
de Selenium.
Il est maintenant temps de se familiariser avec le code HTML de la page cible. Ouvrez-la dans votre navigateur, attendez que les citations se chargent, faites un clic droit sur l’une d’entre elles et sélectionnez l’option “Inspecter” :
Dans le panneau DevTools, vous verrez que chaque citation est enveloppée dans une balise
quote
. Cela signifie que vous pouvez les cibler à l’aide du sélecteur CSS :
.quote
Maintenant, utilisez Pydoll pour attendre que ces éléments apparaissent avant de continuer :
await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)
N’oubliez pas d’importer By :
from pydoll.constants import By
Exécutez à nouveau le script, et vous verrez cette fois que Pydoll attend que les éléments de la citation se chargent avant de fermer le navigateur. C’est du bon travail !
Étape 5 : Préparer le scraping Web
N’oubliez pas que la page cible contient plus d’une citation. Puisque vous voulez toutes les récupérer, vous avez besoin d’une structure de données pour les contenir. Un simple tableau fonctionne parfaitement, il faut donc en initialiser un :
quotes = []
Pour trouver des éléments de la page, Pydoll propose deux méthodes pratiques :
find_element()
: Recherche le premier élément correspondantfind_elements()
: Recherche tous les éléments correspondants
Tout comme wait_element()
, ces méthodes acceptent un sélecteur utilisant l’objet By.
Sélectionnez donc tous les éléments de citation de la page avec :
quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")
Ensuite, passez en revue les éléments et préparez-vous à appliquer votre logique d’extraction :
for quote_element in quote_elements:
# Scraping logic...
Formidable ! Il est temps de passer à la logique d’extraction des données.
Étape 6 : Mise en œuvre de la logique d’analyse des données
Commencez par inspecter un seul élément de la citation :
Comme vous pouvez le constater dans le code HTML ci-dessus, un élément de citation unique contient :
- Le texte cité dans un nœud
.text
- L’auteur dans l’élément
.author
- Une liste de balises dans les éléments
.tag
Mettre en œuvre la logique de scraping pour sélectionner ces éléments et en extraire les données qui nous intéressent :
# Extract the quote text (and remove curly quotes)
text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
text = (await text_element.get_element_text()).replace("“", "").replace("”", "")
# Extract the author name
author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
author = await author_element.get_element_text()
# Extract all associated tags
tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
tags = [await tag_element.get_element_text() for tag_element in tag_elements]
Note: La méthode replace()
supprime les guillemets doubles inutiles du texte extrait.
Utilisez maintenant les données récupérées pour créer un nouvel objet dictionnaire et ajoutez-le au tableau des citations
:
# Populate a new quote with the scraped data
quote = {
"text": text,
"author": author,
"tags": tags
}
# Append the extracted quote to the list
quotes.append(quote)
Voilà qui est fait ! Il ne reste plus qu’à exporter les données scannées au format CSV.
Étape 7 : Exporter au format CSV
Actuellement, les données extraites sont stockées dans une liste Python. Facilitez le partage et l’exploration avec d’autres personnes en les exportant dans un format lisible par l’homme, tel que le format CSV.
Utilisez Python pour créer un nouveau fichier appelé quotes.csv
et le remplir avec les données extraites :
with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
# Add the header
fieldnames = ["text", "author", "tags"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
# Populate the output file with the scraped data
writer.writeheader()
for quote in quotes:
writer.writerow(quote)
N’oubliez pas d’importer csv
de la bibliothèque standard de Python :
import csv
Mission accomplie ! Votre gratte-pydoll est prêt pour l’exécution.
Étape n° 8 : Assembler le tout
Le fichier scraper.py
doit maintenant contenir :
import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
import csv
async def main():
async with Chrome() as browser:
# Launch the Chrome browser and open a new page
await browser.start()
page = await browser.get_page()
# Navigate to the target page
await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")
# Wait up to 3 seconds for the quote elements to appear
await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)
# Where to store the scraped data
quotes = []
# Select all quote elements
quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")
# Iterate over them and scrape data from them
for quote_element in quote_elements:
# Extract the quote text (and remove curly quotes)
text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
text = (await text_element.get_element_text()).replace("“", "").replace("”", "")
# Extract the author
author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
author = await author_element.get_element_text()
# Extract all tags
tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
tags = [await tag_element.get_element_text() for tag_element in tag_elements]
# Populate a new quote with the scraped data
quote = {
"text": text,
"author": author,
"tags": tags
}
# Append the extracted quote to the list
quotes.append(quote)
# Export the scraped data to CSV
with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
# Add the header
fieldnames = ["text", "author", "tags"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
# Populate the output file with the scraped data
writer.writeheader()
for quote in quotes:
writer.writerow(quote)
# Execute the async scraping function
asyncio.run(main())
Ouah ! En moins de 60 lignes de code, vous pouvez construire un robot d’exploration du web avec Pydoll.
Testez le script ci-dessus en l’exécutant :
python scraper.py
Une fois l’exécution terminée, un fichier quotes.csv
apparaîtra dans le dossier de votre projet. Ouvrez-le, et vous verrez les données scrappées proprement organisées :
Et voilà ! Votre script de scraping web Pydoll fonctionne comme prévu.
Contourner Cloudflare avec Pydoll
Lorsque vous interagissez avec un site dans un outil d’automatisation de navigateur, l’un des plus grands défis auxquels vous serez confronté est celui des pare-feu d’application web (WAF). Pensez à des solutions comme Cloudflare, qui sont généralement dotées de protections anti-bots avancées.
Lorsque l’on soupçonne que vos demandes proviennent d’un navigateur automatisé, ces systèmes affichent généralement un CAPTCHA. Dans certains cas, ils le présentent à tous les utilisateurs lors de leur première visite sur le site.
Contourner les CAPTCHAs en Python n’est pas une mince affaire. Cependant, il existe des moyens de faire croire à Cloudflare que vous êtes un utilisateur réel, de sorte qu’il n’affiche pas de CAPTCHA en premier lieu. C’est là que Pydoll entre en jeu, en fournissant une API dédiée à cette fin.
Pour démontrer son fonctionnement, nous utiliserons la page de test “Antibot Challenge” du site ScrapingCourse :
Comme vous pouvez le voir, la page exécute toujours le défi JavaScript de Cloudflare. Une fois contournée, elle affiche un échantillon de contenu pour confirmer que la protection anti-bot a été déjouée.
Pydoll propose deux approches pour gérer Cloudflare :
- Approche du gestionnaire de contexte: Traite le défi anti-bot de manière synchrone, en interrompant l’exécution du script jusqu’à ce que le défi soit résolu.
- Approche de traitement en arrière-plan: Traite l’anti-bot de manière asynchrone en arrière-plan.
Nous allons couvrir les deux méthodes. Cependant, comme le mentionne la documentation officielle, gardez à l’esprit que le contournement de Cloudflare ne fonctionne pas toujours. Cela est dû à des problèmes tels que la réputation de l’IP ou l’historique de navigation.
Pour des techniques plus avancées, lisez notre tutoriel complet sur le scraping de sites protégés par Cloudflare.
Approche du gestionnaire de contexte
Pour laisser Pydoll gérer automatiquement le défi anti-bot de Cloudflare pour vous, utilisez la méthode expect_and_bypass_cloudflare_captcha()
comme ceci :
import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
async def main():
async with Chrome() as browser:
# Launch the Chrome browser and open a new page
await browser.start()
page = await browser.get_page()
# Wait for the Cloudflare challenge to be executed
async with page.expect_and_bypass_cloudflare_captcha():
# Connect to the Cloudflare-protected page:
await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
print("Waiting for Cloudflare anti-bot to be handled...")
# This code runs only after the anti-bot is successfully bypassed
print("Cloudflare anti-bot bypassed! Continuing with automation...")
# Print the text message on the success page
await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
success_text = await success_element.get_element_text()
print(success_text)
asyncio.run(main())
Lorsque vous exécutez ce script, la fenêtre de Chrome contourne automatiquement le défi et charge la page cible.
Le résultat sera le suivant :
Waiting for Cloudflare anti-bot to be handled...
Cloudflare anti-bot bypassed! Continuing with automation...
You bypassed the Antibot challenge! :D
Approche du traitement en arrière-plan
Si vous préférez ne pas bloquer l’exécution du script pendant que Pydoll gère le défi Cloudflare, vous pouvez utiliser les méthodes enable_auto_solve_cloudflare_captcha()
et disable_auto_solve_cloudflare_captcha()
comme suit :
import asyncio
from pydoll.browser import Chrome
from pydoll.constants import By
async def main():
async with Chrome() as browser:
# Launch the Chrome browser and open a new page
await browser.start()
page = await browser.get_page()
# Enable automatic captcha solving before navigating
await page.enable_auto_solve_cloudflare_captcha()
# Connect to the Cloudflare-protected page:
await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
print("Page loaded, Cloudflare anti-bot will be handled in the background...")
# Disable anti-bot auto-solving when no longer needed
await page.disable_auto_solve_cloudflare_captcha()
# Print the text message on the success page
await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
success_text = await success_element.get_element_text()
print(success_text)
asyncio.run(main())
Cette approche permet à votre scraper d’effectuer d’autres opérations pendant que Pydoll résout le problème de l’anti-bot de Cloudflare en arrière-plan.
Cette fois, le résultat sera :
Page loaded, Cloudflare anti-bot will be handled in the background...
You bypassed the Antibot challenge! :D
Limites de cette approche du Web Scraping
Avec Pydoll – ou tout autre outil de scraping – sivous envoyez trop de requêtes, il y a de fortes chances que vous soyez bloqué par le serveur cible. Cela est dû au fait que la plupart des sites web mettent en place une limitation de débit pour empêcher les robots (comme votre script de scraping) de submerger leurs serveurs de requêtes.
Il s’agit d’une technique courante de lutte contre le scraping et le DDoS. Après tout, personne ne souhaite que son site soit inondé par un trafic automatisé.
Même si vous suivez les meilleures pratiques, comme le respect du fichier robots.txt
, le fait d’effectuer de nombreuses requêtes à partir de la même adresse IP peut toujours éveiller les soupçons. Par conséquent, vous risquez toujours de rencontrer des erreurs 403 Forbidden (Interdit)
ou 429 Too Many Requests (Trop de demandes)
.
La meilleure façon d’éviter cela est de faire tourner votre adresse IP à l’aide d’un proxy web.
Si vous n’êtes pas familier avec cela, un proxy web agit comme un intermédiaire entre votre scraper et le site web cible. Il transmet vos demandes et renvoie les réponses, ce qui donne l’impression au site cible que le trafic provient du proxy et non de votre machine.
Cette technique permet non seulement de dissimuler votre véritable adresse IP, mais aussi de contourner les restrictions géographiques et de nombreux autres cas d’utilisation.
Il existe aujourd’hui plusieurs types de proxies. Pour éviter d’être bloqué, vous avez besoin d’un fournisseur de haute qualité offrant des proxies rotatifs authentiques comme Bright Data.
Dans la section suivante, vous verrez comment intégrer les proxys rotatifs de Bright Data à Pydoll pour récupérer des pages Web plus efficacement, en particulier à grande échelle.
Intégration de Pydoll avec les proxy rotatifs de Bright Data
Bright Data contrôle l’un des plus grands réseaux de serveurs mandataires au monde, auquel font confiance les entreprises du classement Fortune 500 et plus de 20 000 clients. Son réseau de serveurs mandataires comprend
- Proxies de centres de données – Plus de 770 000 IP de centres de données.
- Proxies résidentiels – Plus de 150 000 000 IP résidentielles dans plus de 195 pays.
- Proxies ISP – Plus de 700 000 IP ISP.
- Proxies mobiles – Plus de 7 000 000 d’IP mobiles.
Suivez les étapes ci-dessous et apprenez à utiliser les proxys résidentiels de Bright Data avec Pydoll.
Si vous n’avez pas encore de compte, inscrivez-vous à Bright Data. Sinon, connectez-vous pour accéder à votre tableau de bord :
Dans le tableau de bord, cliquez sur le bouton “Obtenir des produits proxy” :
Vous serez redirigé vers la page “Proxies & Scraping Infrastructure” :
Dans le tableau, recherchez la ligne “Résidentiel” et cliquez dessus :
Vous arrivez sur la page de configuration du proxy résidentiel :
Si c’est votre première fois, suivez l’assistant d’installation pour configurer le proxy en fonction de vos besoins. Pour obtenir de l’aide, contactez le service d’assistance 24/7.
Allez dans l’onglet “Aperçu” et localisez l’hôte, le port, le nom d’utilisateur et le mot de passe de votre proxy :
Utilisez ces détails pour construire votre URL de proxy :
proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>";
Remplacez les espaces réservés (,
,
,
) par les informations d’identification de votre proxy.
Veillez à activer le produit proxy en faisant passer l’interrupteur de “Off” à “On” :
Maintenant que votre proxy est prêt, voici comment l’intégrer dans Pydoll en utilisant ses capacités de configuration de proxy intégrées:
import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.browser.options import Options
from pydoll.constants import By
import traceback
async def main():
# Create browser options
options = Options()
# The URL of your Bright Data proxy
proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>" # Replace it with your proxy URL
# Configure the proxy integration option
options.add_argument(f"--proxy-server={proxy_url}")
# To avoid potential SSL errors
options.add_argument("--ignore-certificate-errors")
# Start browser with proxy configuration
async with Chrome(options=options) as browser:
await browser.start()
page = await browser.get_page()
# Visit a special page that returns the IP of the caller
await page.go_to("https://httpbin.io/ip")
# Extract the page content containing only the IP of the incoming
# request and print it
body_element = await page.find_element(By.CSS_SELECTOR, "body")
body_text = await body_element.get_element_text()
print(f"Current IP address: {body_text}")
# Execute the async scraping function
asyncio.run(main())
Chaque fois que vous exécutez ce script, vous verrez une adresse IP de sortie différente, grâce à la rotation du proxy de Bright Data.
Remarque: normalement, l’option --proxy-server
de Chrome ne prend pas en charge les serveurs mandataires authentifiés. Cependant, le gestionnaire de proxy avancé de Pydoll passe outre cette limitation, ce qui vous permet d’utiliser des serveurs proxy protégés par un mot de passe.
Avec les proxies rotatifs de Bright Data, la rotation du proxy Pydoll est simple, fiable et évolutive !
Alternatives à Pydoll pour le Web Scraping
Pydoll est sans aucun doute une bibliothèque de scraping web puissante, en particulier pour automatiser les navigateurs avec des fonctions intégrées de contournement des robots. Cependant, ce n’est pas le seul outil dans le jeu.
Vous trouverez ci-dessous quelques alternatives solides à Pydoll qui méritent d’être prises en considération :
- SeleniumBase: Un cadre Python construit au-dessus des API Selenium/WebDriver, offrant un ensemble d’outils de qualité professionnelle pour l’automatisation du web. Il prend tout en charge, des tests de bout en bout aux flux de travail de scraping avancés.
- ChromeDriver non détecté: Une version corrigée de ChromeDriver conçue pour échapper à la détection par les services anti-bots populaires comme Imperva, DataDome et Distil Networks. Idéal pour le scraping furtif lors de l’utilisation de Selenium.
Si vous êtes à la recherche d’une solution de scraping web plus généraliste qui fonctionne sur n’importe quel site web et prend en charge plusieurs langages de programmation, consultez nos services de scraping:
- Navigateur de scraping: Un navigateur compatible avec Selenium, Playwright et Puppeteer, avec des capacités de déverrouillage intégrées.
- Web Scraper APIs: API préconfigurées pour l’extraction de données structurées à partir de plus de 100 domaines majeurs.
- Web Unlocker: Une API tout-en-un qui gère le déverrouillage des sites dotés de protections anti-bots.
- SERP API: Une API spécialisée qui déverrouille les résultats des moteurs de recherche et extrait des données SERP complètes.
Conclusion
Dans ce tutoriel sur l’intégration de proxy, vous avez appris ce qu’est Pydoll et comment il fonctionne. Nous avons exploré comment l’utiliser pour le web scraping sur un site web alimenté par JavaScript et nous avons vu comment remédier à sa principale limitation grâce à l’intégration de proxy.
par l’intégration d’un proxy.
Vous avez également compris pourquoi l’utilisation de Pydoll sans mécanisme de rotation d’IP peut conduire à des résultats peu fiables. Pour des performances stables, une sécurité renforcée et une évolutivité, vous devez choisir un fournisseur de proxy de confiance. Gagnez du temps et de l’énergie en vous adressant directement au meilleur fournisseur de proxy du marché, Bright Data.
Créez un compte et commencez à tester nos proxies gratuitement dès aujourd’hui !
Aucune carte de crédit requise