Ne laissez pas Selenium se transformer en Flash - quelle est l'importance du mécanisme d'attente ?
Les amis qui ont utilisé Selenium savent que cet outil est comme un aigu, souvent dans la page n'est pas chargé lorsque la précipitation à effectuer des opérations. À ce moment-là, si le proxy ip n'est pas bien coordonné, la lumière ne peut pas localiser l'élément, ou lourd directement déclenché par le mécanisme anti-climbing du site. Nous faisons de l'automatisation, c'est ce que nous craignons le plus de rencontrer : script en cours d'exécution soudainement bloqué, se retourner et regarder en arrière pour voir l'original est un élément du chargement d'un rythme lent.
Pour donner un marronnier, vous utilisez l'agent résidentiel dynamique d'ipipgo pour visiter un site de commerce électronique, si vous ne définissez pas le temps d'attente, le script peut être dans l'image de la marchandise n'est pas encore chargé lorsque vous cliquez sur le bouton d'achat. Cette fois-ci, non seulement l'opération a échoué, mais aussi à cause d'un trafic anormal du site pour tirer l'ip noire. donc ah.Le mécanisme d'attente est le lubrifiant entre le script et le proxy ip.Il faut la tempérer.
Trois conseils pour attendre les réglages - Réglage pratique des paramètres
Commençons par le moins compliquéattendre implicitementC'est comme mettre une feuille de calcul sur un script :
driver.implicitly_wait(10) attend jusqu'à 10 secondes
Cela convient à l'utilisation du proxy éphémère d'ipipgo, en particulier dans les scénarios qui nécessitent des changements fréquents d'adresse IP. Mais attention, l'attente globale peut ralentir la vitesse globale, tout comme l'utilisation d'un filet de pêche pour pêcher, un filet vers le bas doit toujours attendre suffisamment de temps.
Plus intelligent.attente expliciteNous pouvons spécifier les éléments à attendre :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
wait = WebDriverWait(driver, 15)
element = wait.until(lambda x : x.find_element(By.ID, "login-btn"))
À ce moment-là, si vous utilisez le proxy statique longue durée d'ipipgo, vous pouvez prolonger le temps d'attente de manière appropriée. Après tout, la vitesse d'accès à l'IP fixe est plus stable, vous n'avez pas à vous inquiéter d'une déconnexion soudaine.
La "combinaison en or" de l'adresse IP du proxy et du temps d'attente.
Voici un conseil pratique :Ajustement des politiques d'attente en fonction du type d'agentLes agents d'ipipgo sont répartis en trois catégories :
| Type d'agent | Temps d'attente recommandé | Scénarios applicables |
|---|---|---|
| Résidentiel dynamique | 8-12 secondes | Obligatoire pour les visites fréquentes |
| Agents de salle de serveurs | 5-8 secondes | Réponse rapide à la demande |
| statique et durable | 10-15 secondes | Missions de contrôle en cours |
C'est là que le bât blesse :Lors de la mise en place du proxy, vous devez tenir compte de la politique d'attente. Par exemple, n'oubliez pas de réinitialiser le temps d'attente lorsque vous obtenez une nouvelle adresse IP avec l'API d'ipipgo :
Obtenir la nouvelle adresse IP (en utilisant l'exemple de l'API d'ipipgo ici)
proxy = requests.get("https://api.ipipgo.com/getproxy?user=xxx&key=xxx").json()
Définir le proxy lors de la création de l'instance du navigateur
options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-server=http://{proxy["ip"]}:{proxy["port"]}')
Définir le temps d'attente en fonction du type de proxy
si proxy['type'] == 'residential'.
driver.implicitly_wait(12)
else : driver.implicitly_wait(12) : driver.implicitly_wait(12)
driver.implicitly_wait(8)
Foire aux questions AQ - Que dois-je faire si je rencontre une fosse ?
Q : Pourquoi le système signale-t-il toujours un dépassement de délai alors qu'il est réglé sur l'attente ?
R : 80% des ip proxy sont reconnues par le site web cible. Il est recommandé de changer le type de proxy dans la console ipipgo, de choisir l'ip avec un mode de stockage élevé, et en même temps d'allonger le temps d'attente explicite à plus de 20 secondes.
Q:Que dois-je faire si le chargement de la page est rapide ou lent après l'utilisation d'un proxy ?
R : Dans ce cas, il est recommandé de combiner les deux méthodes d'attente. D'abord, utilisez l'attente implicite pour couvrir le fond, puis ajoutez l'attente explicite pour les opérations critiques. N'oubliez pas de sélectionner la fonction "route intelligente" en arrière-plan d'ipipgo, le système assignera automatiquement le nœud le plus rapide.
Q : Comment optimiser le temps d'attente lorsque je dois gérer plusieurs proxy ip en même temps ?
R : Vous pouvez créer un pool de proxy pour classer et stocker différents types d'adresses IP d'ipipgo. Attribuez à chaque ip un temps de réponse et ajustez dynamiquement le temps d'attente en fonction des données historiques lors de l'appel.
Enfin, une bonne stratégie d'attente est comme une police d'assurance pour vos scripts. Associée au service proxy stable d'ipipgo, elle permet à vos scripts d'automatisation d'être moins susceptibles d'être bannis et de fonctionner efficacement. Après tout, dans la bataille constante de la collecte de donnéesElle ne s'arrête jamais..

