爬虫干货 | 爬虫IP代理模块介绍及实战


原创  数据挖掘  2018-05-07

作者 DataGod

皮卡丘联合爬虫业界大牛FastGets整理一系列文章,介绍python爬虫基础知识、大牛多年反爬经验,有难度网站抓取实战、爬虫系统架构设计、安卓app逆向分析。帮助小白入门,初级工程师成为资深工程师,大神回顾。大家有任何问题可留言交流,欢迎转发分享。


高频率的爬取网站页面会给网站服务器带来巨大压力,网站为了应对爬虫一般会采用一些反爬技术,这就使得我们有时候在爬取网站页面的时候被封了ip,致使我们的ip不能访问网站页面。


遇到这样的网站,我们可以通过降低抓取频率或者设置代理ip来达到抓取数据的目的。降低抓取频率会使我们获取数据的效率降低,在有限的时间里面达不到获取数据的目的。最有效的办法是通过设置代理ip的方式,来获取数据。


一、寻找可用代理ip


我们百度代理ip会出现各种各样的代理ip网站,有免费的,有收费的。

1.免费的:

(1)西刺代理( http://www.xicidaili.com/ )

(2)快代理( https://www.kuaidaili.com/free/ )

(3)66免费代理( http://www.66ip.cn/) 等


这些免费的代理ip,大部分都失效了,但是还是有一些有用的,有用率大概在10%左右。如下图:


爬虫干货 | 爬虫IP代理模块介绍及实战_第1张图片

我们可以将验证时间在1个小时之内的ip和端口抓取下来(大概是第一个页面),然后验证哪些ip可用,代码如下:


爬虫干货 | 爬虫IP代理模块介绍及实战_第2张图片

爬虫干货 | 爬虫IP代理模块介绍及实战_第3张图片

运行代码后,可知在西刺免费代理上,筛出了23个可用代理。免费代理适用于需求量较少的情况。以上代码是单线程,在验证代理是否有效的时候,代码运行需要时间比较长,读者可以将其改成多线程,或者到这里

(https://github.com/piweidong/CrawlArticles)

article3/free_proxy_thread.py查看代码。


2.付费的:

(1)云代理(http://www.ip3366.net/pricing/)普通代理

(2)太阳http(http://http.taiyangruanjian.com/newrecharge/)

(3)阿布云代理(https://www.abuyun.com/pricing.html)动态版,不需要用户切换ip,用户只要设置一个固定的,阿布云会帮用户切换。

(4)大象代理(http://www.daxiangdaili.com/)个人版。

(5)全网代理(http://www.goubanjia.com/buy/high.html)的公开代理ip。

(6)ip海(http://www.iphai.com/buy)普通代理。

(7)快代理(https://www.kuaidaili.com/pricing/#ops)的开放代理。


这些付费代理,每家大约一年付费1000元左右,上面的排序是笔者认为的综合排序水平,每家的代理有效率在20%~60%之前,购买一到两家,一般就够了。读者也可以自己测试。或者根据自己的需求购买更贵的私密代理或者独享代理。


购买付费代理之后,读者在代理网站生成提取代理链接后,提取代理,然后验证代理的有效性,步骤和免费代理差不多,只是提取代理的url不同而已,笔记自行尝试。


二、代理调度


要调度代理,我们首先要构建一个代理池。需要实现的功能:


1.定时验证代理的有效性,将无效代理删除。因为免费代理或者购买的代理有效时间不确定,有几分钟,几十分钟,几个小时等,我们要保证我们代理池中的代理基本都是有效的,这样才能使我们抓取成功率高。


2.每个代理都需要记录最后一次访问网站的时间。为了控制一个代理至少隔多少时间才能再次访问。


3.随机选择一个符合上述条件的代理,来作为我们的代理。


代理池,我们一般用数据库的一张表表示。笔者这里在mongodb中建立一张表,作为代理池。笔者百度了几个比较靠谱的教程,来安装mongodb数据库:

(1)Windows系统mongodb安装教程

(https://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html)

(2)Linux(centos)系统安装mongodb教程

(https://blog.csdn.net/wangkai_123456/article/details/50791255)

(3)Mac系统mongodb安装教程

(https://blog.csdn.net/u011642782/article/details/78867985)


我们按照教程安装好mongodb后,启动mongodb服务。然后我们就可以使用mongodb了。笔者这里为了python操作方便,推荐使用mongoengine模块来使用mongodb,读者可以先看下简单的使用教程

(https://blog.csdn.net/u011845833/article/details/51151434)


以下是建立代理池,定时更新代理,代理调度的代码。


爬虫干货 | 爬虫IP代理模块介绍及实战_第4张图片

爬虫干货 | 爬虫IP代理模块介绍及实战_第5张图片

爬虫干货 | 爬虫IP代理模块介绍及实战_第6张图片

爬虫干货 | 爬虫IP代理模块介绍及实战_第7张图片


以后每篇文章的代码都可以在github的CrawlArticles仓库查看:https://github.com/piweidong/CrawlArticles



转https://mp.weixin.qq.com/s?__biz=MzI2NDEwNzgxMw==&mid=2652582376&idx=1&sn=ecc3446aaeed49a8bd39a394c2206601&chksm=f15e33a2c629bab4bc6f85a3fbfe30c66992a2f4057f16b752fcf58e017e984b78a3692fa6bd&mpshare=1&scene=23&srcid=0508Ot01kg4OHSncwUAXzi7q#rd


你可能感兴趣的:(爬虫,爬虫,ip代理)