Certains sites Web auront des mesures anti-crawler correspondantes. Par exemple, de nombreux sites Web détecteront le nombre de visites sur une certaine adresse IP au cours d'une certaine période de temps si la fréquence des visites est trop rapide et ne ressemble pas à celle d'un visiteur normal. , cela peut interdire la visite IP. Nous devons donc configurer des serveurs proxy et changer le proxy de temps en temps. Même si l'adresse IP est interdite, vous pouvez toujours modifier l'adresse IP et continuer l'exploration.
En Python, vous pouvez utiliser le ProxyHandler dans urllib2 pour configurer un serveur proxy. Le code suivant explique comment utiliser le proxy :
import urllib2 # 构建了两个代理Handler,一个有代理IP,一个没有代理IP httpproxy_handler = urllib2.ProxyHandler({"http" : "124.88.67.81:80"}) nullproxy_handler = urllib2.ProxyHandler({}) #定义一个代理开关 proxySwitch = True # 通过 urllib2.build_opener()方法使用这些代理Handler对象,创建自定义opener对象 # 根据代理开关是否打开,使用不同的代理模式 if proxySwitch: opener = urllib2.build_opener(httpproxy_handler) else: opener = urllib2.build_opener(nullproxy_handler) request = urllib2.Request("http://www.baidu.com/") # 使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。 response = opener.open(request) # 就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。 # urllib2.install_opener(opener) # response = urlopen(request) print response.read()
Utilisé. ci-dessus Il s'agit d'un proxy ouvert gratuit. Nous pouvons collecter ces proxys gratuits sur certains sites Web proxy. S'ils peuvent être utilisés après les tests, nous les collecterons et les utiliserons sur le robot d'exploration.
Recommandations associées : "Tutoriel vidéo Python"
Site Web proxy gratuit :
Proxy gratuit des Western Spurs
Procuration rapide gratuite
IP proxy national
Si vous avez suffisamment de proxys, vous pouvez les mettre dans une liste et sélectionner au hasard un proxy pour accéder au site Web. Comme suit :
import urllib2 import random proxy_list = [ {"http" : "124.88.67.81:80"}, {"http" : "124.88.67.81:80"}, {"http" : "124.88.67.81:80"}, {"http" : "124.88.67.81:80"}, {"http" : "124.88.67.81:80"} ] # 随机选择一个代理 proxy = random.choice(proxy_list) # 使用选择的代理构建代理处理器对象 httpproxy_handler = urllib2.ProxyHandler(proxy) opener = urllib2.build_opener(httpproxy_handler) request = urllib2.Request("http://www.baidu.com/") response = opener.open(request) print response.read()
Ceux ci-dessus sont tous des proxys gratuits, qui ne sont pas très stables et ne peuvent souvent pas être utilisés. À l'heure actuelle, vous pouvez envisager d'utiliser un proxy privé. C'est-à-dire acheter un agent auprès d'un fournisseur d'agents. Le fournisseur fournira un agent valide avec son propre nom d'utilisateur et son propre mot de passe. L'utilisation spécifique est la même que celle d'un agent gratuit, comme suit :
# 构建具有一个私密代理IP的Handler,其中user为账户,passwd为密码 httpproxy_handler = urllib2.ProxyHandler({"http" : "user:passwd@124.88.67.81:80"})
Ce qui précède est La méthode de configuration d'un proxy à l'aide de urllib2 semble un peu gênante. Voyons comment utiliser les requêtes pour utiliser le proxy.
Utilisez un proxy gratuit :
import requests # 如果代理需要使用HTTP Basic Auth,可以使用下面这种格式: proxy = { "http": "mr_mao_hacker:sffqry9r@61.158.163.130:16816" } response = requests.get("http://www.baidu.com", proxies = proxy) print response.text
Remarque : vous pouvez écrire le mot de passe du compte dans les variables d'environnement pour éviter les fuites
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!