
Une étude de cas réelle vous apprend à désherber les hôtels avec Python
Récemment, j'ai été confronté à un gros problème lorsque j'ai aidé mon ami à créer un outil de comparaison de prix d'hôtels - j'ai juste récupéré 3 sites web et mon IP a été bloquée. Plus tard, j'ai utilisé le pool d'IP proxy d'ipipgo, et maintenant je peux récupérer les données de plus de 2000 hôtels de manière stable tous les jours. Aujourd'hui, je vais vous apprendre à utiliser Python + proxy IP pour jouer le système de comparaison des prix des hôtels.
Pourquoi ne puis-je pas l'attraper sans une IP proxy ?
Le mécanisme anti-crawler de la plateforme hôtelière est plus sophistiqué qu'une belle-mère :
1. 30 visites consécutives sur une même IP chantage direct
2. la détection de visites régulières directement par l'utilisation d'un code de vérification
3. surveillance plus stricte le matin (ne me demandez pas comment je le sais)
C'est là qu'une IP proxy est nécessaire pour agir en tant quecape d'invisibilité. Test réel avec le service IP rotatif d'ipipgo, le taux de réussite est passé de 23% à 89%.
Les trois éléments essentiels du choix d'un proxy IP
Il y a des milliers d'agents sur le marché, mais vous devez reconnaître ces points pour capturer les données hôtelières :
| norme | valeur de conformité | ipipgo real test |
|---|---|---|
| Note anonyme | type de réserve élevée (par exemple, des déchets) | dissimulation |
| Temps de survie IP | >15 minutes | Moyenne 23 minutes |
| échouer et réessayer | commutation automatique | 0,5 seconde de commutation |
La dernière fois que j'ai essayé 20 IP gratuites, 19 d'entre elles ont été retirées par la plateforme de l'hôtel.
Code réel avec commentaires
Prenons l'exemple d'un hôtel de cours qui sert de la nourriture dure :
demandes d'importation
à partir d'un choix d'importation aléatoire
Interface API pour ipipgo (demandez votre propre remplacement)
IP_API = "http://ipipgo.com/api/get?key=你的密钥"
def get_proxy().
"""Obtenir dynamiquement de nouvelles adresses IP""""
ips = requests.get(IP_API).json()['data']
return {'http' : f'http://{choix(ips)}'}
url = 'https://hotel.某程.com/list'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0 ; Win64...'}
try.
Nouvelle IP pour chaque requête
response = requests.get(url,
headers=headers, proxies=get_proxy
proxies=get_proxy(), timeout=8)
timeout=8)
print(response.text[:200]) voir les 200 premiers caractères
except Exception as e.
print(f "Le crawl a échoué, mais a automatiquement changé d'IP : {e}")
Mettez-le en évidence trois fois :Le réglage du délai d'attente ne peut pas être omis ! Certaines IP proxy sont lentes à répondre et le fait de ne pas fixer de délai d'attente bloquera l'ensemble du processus.
Guide de prévention des renversements
J'ai déjà enjambé ces nids de poule pour vous :
1. taux de réussite le plus élevé entre 1 et 5 heures du matin (la défense de la plate-forme est relâchée)
2. chaque demande est aléatoire et dure de 1 à 3 secondes (simulation de personnes réelles)
3. rejeter immédiatement l'adresse IP actuelle en cas de CAPTCHA
4. changer le User-Agent tous les jours (ne pas utiliser de faux UA)
Dans le cadre de l'initiative de l'ipipgopaiement au volumeEn mode de comparaison, le coût du système de comparaison peut être réduit de 60% - après tout, il n'est pas nécessaire de payer pour des adresses IP non valides.
Triple AQ blanc
Q : Que dois-je faire si l'IP de mon proxy est lente ?
R : Sélectionnez le mode "Speed Priority" dans l'arrière-plan d'ipipgo, le délai réel peut être réglé à 200 ms près.
Q : Serai-je puni par la loi ?
R : Ne récupérez que les données publiques, ne touchez pas aux informations des utilisateurs. Il est recommandé de ramper dans les limites autorisées par le fichier robots.txt.
Q : Quel est le volume d'IP nécessaire par jour ?
R : Pour 200 hôtels par jour, 500 à 800 adresses IP suffisent. ipipgo envoie 500 adresses IP aux nouveaux utilisateurs pour qu'ils les essaient !
Conseils avancés pour le système de comparaison des prix
En procédant ainsi, vous dépassez la concurrence du 80% :
1. capturer 3 à 5 plates-formes en même temps avec plusieurs threads (attention au contrôle de la concurrence)
2. utiliser la fonction "geo-targeting" d'ipipgo pour capturer des villes spécifiques.
3. le stockage des données est moins important (différentes plates-formes peuvent être le même hôtel)
4. surveillance de la fluctuation des prix (fixer un rappel de la hausse et de la baisse de 10%)
Une dernière action peu glorieuse : l'utilisation de l'outil ipipgoIP statique de longue duréepour surveiller les données, plus stable que l'IP dynamique, convient aux scénarios qui nécessitent de garder un œil sur le prix pendant une longue période.
En technologie, la chose la plus importante est .......uh, peut fonctionner en ligne. Si vous avez des questions, n'hésitez pas à discuter dans la section des commentaires, et si votre code ne fonctionne pas, n'oubliez pas de vérifier si vous n'avez pas oublié de changer votre clé API.

