当一个用户访问目标网站出现了限制,说明IP就被限制了。封IP也是网站一种很常见的反爬机制。IP被封后,这时候要么等待,要么就使用代理IP去发出请求访问。这时候就需要使用代理IP池,那什么是代理IP池。
代理IP池:意思就是网络爬虫在采集数据中会遇到各种问题。就要使用隧道转发的代理ip,一个代理IP就一个IP,如果是几十万个代理IP合在一起构建为一个池子,就简称为代理IP池,代理IP池的构建不仅能维护IP池,网络爬虫采集数据时也能更有效的使用有效的代理IP去访问目标网站。
代理IP的获取:一开始许多网络爬虫用户需要代理IP的时候,都会再网上去采集那些免费代理IP,选择一些有效的代理IP,去充实自己的代理IP池。虽然免费的代理IP有个别代理能用,但是时间久了,采集网上的代理IP,不仅效率差,筛选慢,而且对自己的业务效果也不好。为了解决这种情况,所以就会有高匿爬虫代理IP,让网络爬虫多了一种选择,去网上选择一些代理商购买隧道转发的爬虫代理,来更有效的采集业务数据。
代理IP的质量:网络上采集免费代理IP,都没质量保证。所以市面上才有会许多付费高匿代理,其实付费高匿代理IP,也不能完全保证质量。代理IP的质量非常重要,保证好了IP质量,才能保证好业务的进展,所以在选择代理商的时候一定要选择一些自营线路,电信机房宽带,私密家庭IP,隧道转发代理IP,最好是业务独享模式管理的代理商。这样的代理商代理IP的质量一般都很稳定。
python爬虫实现实用爬虫代理:
#! -*- encoding:utf-8 -*-
import requests
import random
# 要访问的目标页面
targetUrl = "http://httpbin.org/ip"
# 要访问的目标HTTPS页面
# targetUrl = "https://httpbin.org/ip"
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "username"
proxyPass = "password"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
# 设置 http和https访问都是用HTTP代理
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
}
# 设置IP切换头
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text