
Apprentissage pratique de l'utilisation de Selenium avec un proxy IP pour capturer des données
Les frères engagés dans le crawler comprennent, maintenant le site anti-climbing de plus en plus stricte. Récemment, un ami du commerce électronique m'a contacté et m'a dit qu'il utilisait Selenium pour attraper le prix du concurrent est toujours bloqué IP, anxieux de sauter directement aux pieds. Dans ce numéro, nous allons voir comment utiliser les expressions régulières de Python + l'IP proxy pour résoudre ce problème.
Pourquoi dois-je utiliser une adresse IP proxy ?
Pour donner un exemple concret : une plateforme de commerce électronique dont l'adresse IP a été visitée 20 fois de suite sera directement inscrite sur la liste noire. À l'heure actuelle, si vous utilisezProxy résidentiel dynamique pour ipipgoSi vous êtes une personne réelle, vous ne pouvez pas savoir s'il s'agit d'une personne réelle ou d'une machine, parce que vous changez votre IP pour une région différente à chaque fois que vous le demandez.
| prendre | Pas besoin d'agent. | Proxy avec ipipgo |
|---|---|---|
| Demandes par heure | 50 fois doivent être bloquées | Plus de 1000 fois stable |
| l'intégrité des données | Interruptions fréquentes | capture complète |
Le code actuel s'écrit comme suit
Tout d'abord, il faut comprendre l'ensemble des trois pièces de base : le navigateur de contrôle Selenium, les expressions régulières pour mentionner les données, l'IP du proxy pour assurer la sécurité. Ici, nous nous concentrons sur la configuration du proxy :
from selenium import webdriver
Format du proxy pour le compte ipipgo:password@ip:port
proxy = "vipuser:123456@45.76.89.12:8080"
options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-server=http://{proxy}')
N'oubliez pas d'ajouter la gestion des exceptions ! Il arrive que le proxy se mette en veilleuse
try.
driver = webdriver.Chrome(options=options)
driver.get("https://目标网站.com")
except Exception as e.
print("Connexion proxy interrompue :", e)
Attention aux nids-de-poule :De nombreux tutoriels enseignent l'utilisation de proxys gratuits, ce qui donne lieu à des IP invalides ou lentes comme des tortues. Il est recommandé d'aller directement àPaquets payants pour ipipgoLe temps de réponse de leur pool IP dédié peut atteindre 200 ms ou moins.
Expressions régulières
Après avoir obtenu le code source du site web, le crawl des données de prix utilise cette régularité :
importer re
Correspond au format ¥12.34
modèle_de_prix = r'¥(d+.d{2})'
prix = re.findall(modèle_de_prix, page_source)
rencontré avec une virgule de ¥ 1,234.56 cette écriture
motif_avancé = r'¥((d+,)d+.d{2})'
Ne sous-estimez pas cette concordance des décimales, certains sites ajoutent délibérément le prix de lacaractère invisibleIl est temps d'utiliserspour ignorer les espaces : r'¥s(d+)s.s(d{2})'
Réponses aux questions fréquentes
Q : Pourquoi utiliser Selenium sans requêtes ?
R : Aujourd'hui, de nombreuses données de sites web sont chargées dynamiquement en JS, les requêtes ne peuvent pas obtenir les données complètes, vous devez utiliser le navigateur pour rendre les données.
Q : Comment les agents d'ipipgo choisissent-ils les forfaits ?
R : Pour les essais à petite échellepaiement au volumeSélection de projets à long termeFormules personnalisées pour les entreprisesIls disposent d'une assistance technique pour aider à la mise au point.
Q : Que dois-je faire si je n'obtiens pas de correspondance ?
R : utilisez d'abord print(page_source) pour voir le contenu réel, ne vous fiez pas aux yeux pour voir l'affichage de la page, le code source peut contenir des balises cachées.
Dites quelque chose qui vient du cœur.
J'aidais un ami à collecter des données l'année dernière et j'ai failli faire capoter le projet avec des proxys gratuits. J'ai alors opté pourAgents de numérotation mixtes pour l'ipipgoEn outre, grâce à leur API de rotation IP, l'efficacité de la collecte est directement triplée. La stabilité de l'agent est essentielle, en particulier pour la surveillance des prix, qui exige un travail important en temps réel.
Un dernier conseil : n'économisez pas d'argent sur les proxys ! Le blocage d'un seul numéro cause suffisamment de dégâts pour acheter six mois de service payant. Utilisez le code promo maintenant !SELENIUM666Vous pouvez bénéficier d'une remise de 10 % sur le site web d'ipipgo, et les nouveaux utilisateurs peuvent faire un essai de 3 jours, alors ne soyez pas timide sur ce que vous devriez recueillir.

