IP代理池制作
GitHub主页:
https://github.com/hfldqwe/
使用工具:
Ip代理抓取:请求
后台建设:Django+Redis Waters:Us+Them Redis
代理检测:
Ip地址查询:http://ip.chinaz.com/
本网站提供的界面:http://ip.chinaz.com/getip.aspx
代理捕获地址:
西索恩经纪人:http://www.xicidaili.com/nn/ ˹+ NUM
设计理念
爬上代理ip获取以下信息:
ip地址
港口
服务器地址
类型
匿名吗?
类型
存活期
验证时间
在Redis和ip查询界面,分别对代理进行验证,如果成功,则计算到期时间并分类。
将状态、类型和到期时间分别写入Redis。
目的性利用
每15元分钟爬一次。
Ip代理自动重复数据删除
提供Python调用的接口和http接口。
确保代理的高可用性,并在每次调用时验证代理的可靠性。
用法:
在后台运行ip _ proxies.py文件,每隔15分钟更新一次代理。
有几种方法可以导入或继承文件中ip _ proxies.py中的AgentIpPool模块:
get_one
类型可以是“http”或“https”,随机返回一个可用的代理,格式为:127。0元。0元。1元:8000。
获取全部
和上面一样,只是全部退回,但是测试发现了一点问题。
以下方法可用于覆盖修改
保存_ip
给一个ip字典作为参数,分类保存。
获取ip地址
给一个页码。
返回一个集合,每个元素是一个元组,记录了代理的信息。
验证_http
三个参数,返回一个布尔值。
用来验证代理是否可用,还有verify_https用来验证https代理是否可用。
网上过滤器
参数是一组包含ip信息的元组。
调用verify_http和verify_https来确定代理是否可用。
过滤器_一
用于在取出代理时进行验证。
Able_ip是从redis中提取的ip,func是使用这个方法的方法,也就是在get _ Li ONE中表示get _ Li ONE,在get_all中表示get_all。
过滤_全部
同上
能力_知识产权
就是上面说的那套able_ip。
写池
对于之前的套餐来说,这也是最需要改进的地方。
缺陷:
缺陷是显而易见的,以下几个方面需要改进:
异步处理:这不是异步,为什么?因为我不是很熟练,后面再加,这样不用后台运行就可以直接调用了。另外,在抓取和验证的时候也不需要屏蔽。
模块之间的逻辑:不是很清楚,在逻辑方面需要改进。感觉现在写的还是太王思佳了,还是没有学会脱钩的思想。
粘贴下面的代码:
最后
看了这么多代码不想玩了?别担心,我给你录个视频。