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处理器(代理设置)的更多相关文章

  1. ProxyHandler处理器__代理设置__自定义opener

    ProxyHandler处理器(代理设置) 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的. 很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正 ...

  2. python爬虫(五) ProxyHandler处理器

    ProxyHandler处理器 一.如果我们在一段时间内用某个ip地址访问了一个网站次数过多,网站就检测到不正常,就会禁止这个ip地址的访问.所以我们可以设置一些代理服务器,每段时间换个代理,就算ip ...

  3. http错误和异常处理,认证和代理设置

    http错误: import urllib.requestreq = urllib.request.Request('http://www.python.org/fish.html')try:urll ...

  4. Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影)

    Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影) ProxyHandler处理(代理服务器),使用代理IP,是爬虫的常用手段,通常使用UserAgent 伪装浏览器爬取仍然可能被网 ...

  5. requests--超时设置,代理设置,身份认证

    超时设置 你可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应.基本上所有的接口都应该使用这一参数.如果不使用,你的程序可能会永远失去响应 import requ ...

  6. 人性化的Requests模块(响应与编码、header处理、cookie处理、重定向与历史记录、代理设置)

    Requests库是第三方模块,需要额外进行安装.Requests是一个开源库 pip install requests 去GitHub下载回来,进入解压文件,运行setup.py 比urllib2实 ...

  7. Python开发工具PyCharm个性化设置(图解)

    Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...

  8. JMeter学习-024-JMeter 命令行(非GUI)模式详解(二)-执行代理设置

    闲话少述,接 上文 继续... 5.设置代理 jmeter -n -t JMeter分布式测试示例.jmx -H 20.9.215.90 -P 9999 -l report\01-result.csv ...

  9. android sdk manager 代理设置(送给牛逼的)

    解决android sdk更新慢的问题(公司竟然把sdk更新给墙了). 第一步:如下图 第二部:进入代理设置页面,进行设置.如下图  

随机推荐

  1. Python之属性、特性和修饰符

    作为面对对象的核心内容,将从以下一个方面进行总结: 1. property和@property 2. __getattribute__().__getattr__().__setattr__().__ ...

  2. bzoj 2435 道路修建

    Written with StackEdit. Description 在 \(W\) 星球上有 \(n\) 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是 ...

  3. jquery ajax 跨域设置

    xhrFields: { withCredentials: true},crossDomain: true,

  4. jQuery的ajax跨域实现

    今天有人问我跨域ajax请求是否可以发送,之前没接触过此类问题,没答上,后来查了下,以下备忘. 我在本地建了三个站点,并设置了host文件模拟跨子域和跨全域 coolkissbh.com blog.c ...

  5. windows64位Oracle安装和PL/SQL配置

    折腾了一下午,趟了几个坑,终于用PL/SQL连上了Oracle,晒晒填坑经历. 先去oracle官网下数据库安装文件,官网有登陆验证,如果没注册的话先注册吧.数据库(下载地址http://www.or ...

  6. linux下PS1命令提示符设置

    linux下PS1命令提示符设置 在此文件最后一行添加:vim /etc/profileexport PS1='[\u@\h \W]\$ '   #这里必须用单引号.     \d :代表日期,格式为 ...

  7. 分布式缓存系统 Memcached slab和item的主要操作

    上节在分析slab内存管理机制时分析Memcached整个Item存储系统的初始化过程slabs_init()函数:分配slabclass数组空间,到最后将各slab划分为各种级别大小的空闲item并 ...

  8. juc线程池原理(三):ThreadFactory、拒绝策略、提交任务、关闭线程池

    概要 (一) ThreadFactory 线程池中的ThreadFactory是一个线程工厂,线程池创建线程都是通过线程工厂对象(threadFactory)来完成的. 类图如下: 上面所说的thre ...

  9. 转: SQL中的where条件,在数据库中提取与应用浅析

    SQL中的where条件,在数据库中提取与应用浅析 http://hedengcheng.com/?p=577 1问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当 ...

  10. 转载:利用UDEV服务解决RAC ASM存储设备名

    利用UDEV服务解决RAC ASM存储设备名 本文转载自Maclean Liu :http://www.askmaclean.com/archives/utilize-udev-resolve-11g ...