9-python 的ProxyHandler处理器(代理设置)

本文介绍了一种常见的爬虫技术——使用代理IP。通过设置代理服务器,可以在爬虫过程中更换IP地址,避免因频繁访问同一网站而被封禁。文章提供了一个简单的Python示例,演示了如何使用urllib库来实现随机代理IP的功能。

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!')

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ystraw_ah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值