9-python 的ProxyHandler处理器(代理设置)
Posted ystraw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9-python 的ProxyHandler处理器(代理设置)相关的知识,希望对你有一定的参考价值。
ProxyHandler处理器(代理设置)
使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的。
很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,它会禁止这个IP的访问。
所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取。
#_*_ coding: utf-8 _*_ ‘‘‘ Created on 2018年7月13日 @author: sss 功能:使用代理 ‘‘‘ import urllib.request 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) #构建两个代理Handler,一个有代理Ip,一个没有代理ip # httpProxy_handler = urllib.request.ProxyHandler({‘http‘: ‘124.193.85.88:8080‘}) httpProxy_handler = urllib.request.ProxyHandler(proxy) #每次随机一个代理 httpProxy_handler = urllib.request.ProxyHandler({}) #就算五ip也要放一个空的字典 proxySwitch = True #定义一个代理开关 # proxySwitch = False #定义一个代理开关 #使用代理Handler对象,创建自定义的opener对象 #根据代理开关是否打开,使用不同的代理模式 if proxySwitch: opener = urllib.request.build_opener(httpProxy_handler) else: opener = urllib.request.build_opener(httpProxy_handler) request = urllib.request.Request(‘http://www.baidu.com/‘) # 1.如果这么写,只有使用opener.open()发送请求时,才能使用自定义的代理,而使用urlopen()则不是使用自定义的代理 response = opener.open(request) # 2.如果这样写,就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen()发送请求都是使用自定义代理 # urllib.request.install_opener(opener) # respense = urllib.request.urlopen(request) print(response.read()) print(‘finish!‘)
以上是关于9-python 的ProxyHandler处理器(代理设置)的主要内容,如果未能解决你的问题,请参考以下文章
python3下urllib.request库高级应用之ProxyHandler处理器(代理设置)