Qu'est-ce que PyCURL ?
En termes humains, c'est le "couteau suisse" de Python, qui gère les requêtes réseau comme la commande curl. Il s'appuie sur la bibliothèque libcurl, qui est parfaite pour les personnes qui ont besoin deRequêtes web haute performanceLes scénarios. Lorsque l'on joue avec la rotation des adresses IP du proxy, par exemple, ce n'est pas une fraction de seconde plus rapide que la bibliothèque des requêtes.
Par exemple, il faut 5 secondes pour accéder à 10 sites web avec des bibliothèques normales, PyCURL peut le faire en 2 secondes. Surtout avec notre ipipgoAccès exclusif au pool d'agents à haut débitL'effet est direct !
Installation pratique de PyCURL
Ne vous laissez pas effrayer par l'installation, il s'agit en fait d'un processus en deux étapes :
Installez d'abord les dépendances du système (exemple Ubuntu)
sudo apt-get install libcurl4-openssl-dev
Utilisez ensuite pip pour installer
pip install pycurl
Si vous obtenez une erreur concernant des en-têtes manquants, il est probable que le paquet openssl ne soit pas installé. Rappelez-vousCharger les dépendances avant de charger les paquetsNe vous trompez pas d'ordre !
Enseignement pratique de la configuration de l'IP proxy
Voici l'essentiel ! Configuration en trois étapes avec le service proxy d'ipipgo :
import pycurl
c = pycurl.Curl()
c.setopt(pycurl.URL, 'http://检测网址.com')
c.setopt(pycurl.PROXY, 'gateway.ipipgo.com') adresse du serveur proxy
c.setopt(pycurl.PROXYPORT, 9021) port du service
c.setopt(pycurl.PROXYUSERPWD, 'user:password') mot de passe du compte
c.perform()
Attention aux nids-de-poule :
paramètres | instructions | valeurs spécifiques à l'ipipgo |
---|---|---|
PROXYTYPE | accord d'agence | La valeur par défaut de HTTP ne doit pas être modifiée. |
TIMEOUT | réglage du délai d'attente | Recommandé 15 secondes |
CONNECTTIMEOUT | Délai de connexion | Recommandé 8 secondes |
Comment se déroulent les scénarios d'entreprise réels ?
Supposons que, pour surveiller les prix, vous deviez accéder au site de commerce électronique à l'aide de différentes adresses IP :
from io import BytesIO
import random
Liste des mandataires pour ipipgo
proxies = [
's1.ipipgo.com:9010',
's2.ipipgo.com:9012',
's3.ipipgo.com:9015'
]
buffer = BytesIO()
c = pycurl.Curl()
c.setopt(pycurl.WRITEDATA, buffer)
c.setopt(pycurl.URL, "https://某电商网站.com")
c.setopt(pycurl.PROXY, random.choice(proxies))
c.setopt(pycurl.SSL_VERIFYPEER, 0) skip SSL verification
try.
c.perform()
print(buffer.getvalue().decode('utf-8'))
except pycurl.error as e.
print(f "Le crawl a échoué, code d'erreur : {e.args[0]}")
Utilisez un proxy aléatoire pour éviter d'être bloqué, n'oubliez pas de l'associer à celui d'ipipgo.Changement automatique d'adresse IPavec une nouvelle IP pour chaque demande.
Lignes directrices sur le déminage des problèmes courants
Q:Pourquoi le système renvoie-t-il un code brouillé ?
A : ajoutez cette ligne pour définir l'encodage : c.setopt(pycurl.ENCODING, 'gzip,deflate')
Q : L'authentification par proxy échoue toujours ?
R : Vérifiez le format du mot de passe du compte, il doit s'agir d'une chaîne user:passwd, n'utilisez pas de symboles chinois !
Q : Comment puis-je augmenter ma vitesse de téléchargement ?
R : L'activer dans la console ipipgocanal à grande vitessewhile setting : c.setopt(pycurl.LOW_SPEED_LIMIT, 102400) Limite de vitesse 100KB/s
Conseils pour l'optimisation des performances
1) Réutiliser les objets Curl : ne soyez pas stupide et ne créez pas de nouveaux objets à chaque fois !
2) Activer la mise en commun des connexions : c.setopt(pycurl.MAXCONNECTS, 5)
3) Activer la mise en cache DNS : c.setopt(pycurl.DNS_CACHE_TIMEOUT, 300)
4. avec l'ipipgoProxies statiques de longue duréeRéduction du nombre de certifications
Enfin, pour être honnête, bien que PyCURL soit très performant, la courbe d'apprentissage est un peu raide. Si vous utilisez principalement l'IP proxy pour faire des affaires, directement sur le SDK ipipgo est plus sans problème, leur nouvelle fonction de routage intelligent est vraiment parfumée, la sélection automatique du nœud le plus rapide, sans oublier, mais aussi peut automatiquement retenter les demandes qui ont échoué.