您的位置:新闻资讯 >文章内容
如何构建自己的ip代理池
来源:本站 作者:jinglingdaili 时间:2019-04-09 17:22:36

首先我们要有一些爬虫去网上的免费代理网站爬取代理,解析处理后存到数据库中,我选用了NoSQL界的翘楚MongoDB作为我的后端数据库,当然你也可以选择mysql,这纯粹是因为个人喜好。好了,废话不多说,上代码。


为了爬虫代理的扩展性,函数命名采用spider+数字的格式。


以上爬虫就是爬取了这个网站,这网站给出的代理大多都是可用的,我们将在下文看到。因为这个在国内无法直接访问,我用了代理去爬取。


因为爬虫的质量参差不齐,我们必须有机制来筛选可用的爬虫,于是有了下面的这个函数:

代码


函数用获取的代理去尝试打开百度以及淘宝网,并且设置为3秒,这足够满足我们一般使用爬虫的需求了。当此代理可以在3秒内打开百度或者淘宝的时候,我们就应该将此代理存入数据库,否则丢掉此代理。下面的函数就是写入数据库的函数:


代码


另外需要说明的是,我们在写入数据库前应检查数据库中是否已经存在了这个代理,印象中Mongo提供了方法,即存在就更新不存在则创建,但是在我使用写数据库时并没找到关于的资料,于是只能自己实现了一个and的功能。


再下一步,就是从数据库中提取爬虫代理供我们使用了,代码如下:


代码


可以看到,函数中我调用了一个名为的函数,这个函数的作用就是检查代理是否已经过期,因为我们在写数据库时爬虫代理是可用的,而当我们提取这个代理时有相当的概率让此代理废弃掉,所以我们为了筛选出可用代理,在中不仅代理可用性,也对数据库做了清洗。当然,我们也可以用一个实时检查数据库内代理是否可用的程序来做这样一件事情,本例中我并未完成这个工作,或许会在代理达到一定数量时补写这个程序。


函数的代码如下:


以下代码用于扩展代理来源:


代码


其中有些网站需要验证,所以我们带访问,有些网站在国内因为某些原因无法打开,我们用代理访问。


最后是一个轮询函数,实时去请求爬虫代理网站获取新的代理:


本文只是一个提供IP代理服务的思路,大量免费IP代理的获取可以参考这个项目,此项目当时由几十人贡献了数十个代理网站的解析规则。

相关文章内容简介
在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961