【Github】项目名:IPProxyTool:python爬虫抓取免费代理IP并提取有效IP
一、项目简介
IPProxyTool是一个用Python编写的工具,它使用Scrapy爬虫来抓取代理网站,从而获取大量的免费代理IP。之后会对这些IP进行过滤,将所有可用的IP提取出来并存入数据库,以备后续使用。
二、项目运行环境安装
需要安装python3和mysql数据库以及cryptography模块。安装环境的命令如下:
- sudo yum install gcc libffi – devel python – devel ssl – devel
- pip install -r requirements.txt
三、下载使用
- 将项目克隆到本地:$git clone https://github.com/awolfly9/IPProxyTool.git
- 进入工程目录:$cd IPProxyTool
- 修改mysql数据库配置config.py中database_config的用户名和密码为数据库的用户名和密码:$vim config.py
- 导入数据表结构:
- $mysql> create database ipproxy;
- $mysql> use ipproxy;
- $mysql> source ‘/你的项目目录/db.sql’
- 运行启动脚本ipproxytool.py,也可以分别运行抓取,验证,服务器接口脚本(运行方法参考项目说明),还新增了异步验证方式(运行方法为$python ipproxytool.py async)。
四、项目功能模块
-
抓取代理网站
所有抓取代理网站的代码都在proxy扩展。若要抓取其他的代理网站:
- 在proxy目录下新建脚本并继承自BaseSpider。
- 设置name、urls、headers。
- 重写parse_page方法,提取代理数据。
- 将数据存入数据库(具体可以参考ip181 kuaidaili)。
- 如果需要抓取特别复杂的代理网站,可以参考peuland。修改run_crawl_proxy.py导入抓取库,添加到抓取队列,可以单独运行run_crawl_proxy.py脚本开始抓取代理网站($python run_crawl_proxy.py)。
-
验证代理IP是否有效
目前验证方式:
- 从上一步抓取并存储的数据库中取出所有的代理IP。
- 利用取出的代理IP去请求httpbin。
- 根据请求结果判断出代理IP的有效性,是否支持HTTPS以及匿名度,并存储到表httpbin中。
- 从httpbin表中取出代理去访问目标网站,例如豆瓣。
- 如果请求在合适的时间返回成功的数据,则认为这个代理IP有效。并且存入相应的表中(一个目标网站对应一个脚本)。所有验证代理ip的代码都在validator扩展。
- 若要验证其他网站:
- 在validator目录下新建脚本并继承Validator。
- 设置name、timeout、urls、headers。
- 然后调用init方法(可以参考baidudouban)。
- 如果需要特别复杂的验证方式,可以参考assetstore。修改run_validator.py导入验证库,添加到验证队列,可以单独运行run_validator.py开始验证代理ip的有效性($python run_validator.py)。
-
获取代理IP数据服务器接口
在config.py中修改启动服务器端口配置data_port(默认为8000),启动服务器:$python run_server.py。服务器提供接口获取http://127.0.0.1:8000/select?name = httpbin&anonymity = 1&https = yes&order = id&sort = desc&count = 100(各参数有不同意义,详见项目文档),还可以进行删除和插入操作(接口地址及参数详情见项目文档)。
五、项目总结
IPProxyTool功能较为完善,涵盖了代理IP的抓取、验证和获取等功能,并且在不断更新优化,如添加多数据库支持、更多筛选条件、多进程验证等是未来的计划。欢迎大家在评论区留言讨论该项目相关的任何问题或者分享自己的使用经验。
项目地址
数据统计
数据评估
关于IPProxyTool:python爬虫抓取免费代理IP并提取有效IP特别声明
本站链氪巴士提供的IPProxyTool:python爬虫抓取免费代理IP并提取有效IP都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月6日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。
相关导航
暂无评论...