当前位置: > python爬虫 >

搭建ip代理池思路
栏目分类:python爬虫   发布日期:2019年03月22日 14:57:22   浏览次数:

大家好,我是爱吃苹果的宇文拓,我今天给大家带来的是关于ip代理池的搭建思路


        我们在爬虫的时候,会经常遇到ip被目标网站被封,比如在爬取豆瓣网、今日头条等网站时,如果你在一天内同一ip请求服务器过多。然后你的ip地址就会被加入服务器的黑名单。你再访问目标网站时就不能成功访问了。因此我们需要使用代理ip来避免服务器对我们真实ip的封禁。
 一.代理池架构
   获取模块
   存储模块
   检测模块
   接口模块



二.总体思路


       我们初步将ip代理池分为四个模块,分别是以上提到的四个模块。模块之间相互联系:我们首先使用获取模块从各大免费ip代理网站获取ip地址如西刺代理、66代理、360代理等。我们获取到代理ip后,将他们存入数据库里面,比如mysql数据库,redis数据库等。是不是我们存储到数据库后中我们直接把代理ip地址拿出来用就可以了呐?答案是否定的,我们从这些代理网站抓取到的ip地址,不一定都是可用的,如果我们的程序使用了失效的代理ip地址,那我们的工作效率就更加的低了。因此我们需要加入检测模块。实时的将我们存入数据库里面的代理ip拿出来检测,然后做好相应的记录,比如可用为我们的代理ip们设置分数,如果检测到ip代理不可以就可以减相应的的分数,如果可用,就增加相应的分数。说到这里,如果我们每次为程序添加代理都要去数据库里面获取代理ip,这样会增加数据库压力的,所以我们可以利用接口模块,用flask框架搭建一个简易的web框架,然后做一个http接口,就可以获取到有用的代理ip了。


三.实现步骤

我们在总体思路中介绍了整个代理池的设计思路,以及各个模块的功能。但是具体怎么实现呐,实现的思路是怎么样呐?
   1.我们需要用爬虫写一个获取模块,从个大代理网站抓取代理ip地址
   2.获取模块完成了,我们需要完成存储模块。我们将需要用到redis数据库,使用python操作redis,将获取到的ip地址存储到redis 数据库中
   3.我们完成了存储模块后,接下来是最重要的,我们需要不断的检测我们的代理ip的质量,保证我们代理池里面的ip地址都是有活力的,提高代理ip可用率。我们可以使用异步网络请求库aiohttp
来完成检测。
   4.这是最后一步,也非常简单。我们需要做一个http接口,让我们的爬虫在爬取数据之前去请求这个接口,拿到有效的代理ip。需要用到flask框架,并结合RedisClient库来完成接口模块。


总结:今天我们讲到了关于搭建ip代理池的架构,以及思路。总共分为四个模块,我们一个一个模块的实现,然后在组装在一次,就完成了整个ip代理池

相关热词:

相关内容
热门关键词
python字符串
     
python教程 python爬虫 python人工智能 Python+大数据 python问答