Maison > Article > développement back-end > Exemple de proxy automatique IP dans la technologie d'exploration Python
Récemment, j'ai l'intention d'explorer des questions d'examen souples sur Internet pour l'examen. J'ai rencontré quelques problèmes lors de l'exploration. L'article suivant présente principalement l'utilisation de Python pour explorer les questions d'examen souples et les informations pertinentes du proxy automatique IP. L'article le présente de manière très détaillée, les amis qui en ont besoin peuvent venir y jeter un œil ci-dessous.
Préface
Récemment, il y a eu un examen de niveau professionnel en matière de logiciels, ci-après appelé examen logiciel afin de mieux réviser et s'y préparer. l'examen, je prévois de récupérer les questions du test doux sur rkpass.cn.
Tout d'abord, laissez-moi vous raconter l'histoire (keng) de la façon dont j'ai exploré les questions d'examen soft. Désormais, je peux capturer automatiquement toutes les questions dans un certain module, comme indiqué ci-dessous :
Actuellement, je peux capturer les 30 enregistrements de questions de test du superviseur du système d'information. Le résultat. est comme indiqué ci-dessous :
L'image du contenu capturé :
Bien que certaines informations puissent être capturées Cependant, la qualité du code n'est pas élevé.Prenons l'exemple du superviseur du système d'information de capture. Parce que l'objectif est clair et que les paramètres sont clairs, afin de capturer les informations du papier de test en peu de temps, aucune gestion d'exception n'a été effectuée. J'ai rempli le trou pendant longtemps la nuit.
Revenant au sujet, j'écris ce blog aujourd'hui car je suis tombé sur un nouvel écueil. D’après le titre de l’article, on peut deviner qu’il a dû y avoir trop de demandes, l’IP a donc été bloquée par le mécanisme anti-crawler du site.
Une personne vivante ne peut pas mourir d'urination. Les actes de nos ancêtres révolutionnaires nous disent qu'en tant que successeurs du socialisme, nous ne pouvons pas succomber aux difficultés, ouvrir des routes à travers les montagnes et construire. ponts sur les rivières, afin de résoudre le problème IP, l'idée du proxy IP est apparue.
Pendant le processus de capture d'informations par les robots d'exploration Web, si la fréquence d'exploration dépasse le seuil défini du site Web, l'accès sera interdit. Habituellement, le mécanisme anti-crawler du site Web identifie les robots d'exploration en fonction de l'adresse IP.
Les développeurs de robots d'exploration doivent donc généralement utiliser deux méthodes pour résoudre ce problème :
1. Ralentissez la vitesse d'exploration et réduisez-la. la pression sur le site cible. Mais cela réduira la quantité d’exploration par unité de temps.
2. La deuxième méthode consiste à briser le mécanisme anti-crawler et à poursuivre l'exploration à haute fréquence en définissant une adresse IP proxy et d'autres moyens. Mais cela nécessite plusieurs adresses IP proxy stables.
Pas grand chose à dire, passons directement au code :
# IP地址取自国内髙匿代理IP网站:www.xicidaili.com/nn/ # 仅仅爬取首页IP地址就足够一般使用 from bs4 import BeautifulSoup import requests import random #获取当前页面上的ip def get_ip_list(url, headers): web_data = requests.get(url, headers=headers) soup = BeautifulSoup(web_data.text) ips = soup.find_all('tr') ip_list = [] for i in range(1, len(ips)): ip_info = ips[i] tds = ip_info.find_all('td') ip_list.append(tds[1].text + ':' + tds[2].text) return ip_list #从抓取到的Ip中随机获取一个ip def get_random_ip(ip_list): proxy_list = [] for ip in ip_list: proxy_list.append('http://' + ip) proxy_ip = random.choice(proxy_list) proxies = {'http': proxy_ip} return proxies #国内高匿代理IP网主地址 url = 'http://www.xicidaili.com/nn/' #请求头 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'} #计数器,根据计数器来循环抓取所有页面的ip num = 0 #创建一个数组,将捕捉到的ip存放到数组 ip_array = [] while num < 1537: num += 1 ip_list = get_ip_list(url+str(num), headers=headers) ip_array.append(ip_list) for ip in ip_array: print(ip) #创建随机数,随机取到一个ip # proxies = get_random_ip(ip_list) # print(proxies)
Capture d'écran des résultats en cours d'exécution :
Dans ce De cette manière, lorsque le robot d'exploration demande, définir l'adresse IP de la demande sur une adresse IP automatique peut efficacement éviter le simple blocage et l'adresse IP fixe dans le mécanisme anti-crawler.
------------------------------------------------------ ------ -------------------------------------------- ------ ---------------------------------------
Pour la stabilité du site Web, chacun doit garder la vitesse du robot sous contrôle, après tout, ce n'est pas non plus facile pour les webmasters. Le test de cet article n’a capturé que 17 pages d’adresses IP.
Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!