Exemple de proxy automatique IP dans la technologie d'exploration Python

Y2J
Libérer: 2017-04-21 15:22:59
original
2200 Les gens l'ont consulté

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 :

Exemple de proxy automatique IP dans la technologie d'exploration Python

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 :

Exemple de proxy automatique IP dans la technologie d'exploration Python

L'image du contenu capturé :

Exemple de proxy automatique IP dans la technologie d'exploration Python

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.

Exemple de proxy automatique IP dans la technologie d'exploration Python

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)
Copier après la connexion

Capture d'écran des résultats en cours d'exécution :

Exemple de proxy automatique IP dans la technologie d'exploration Python

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!