链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于

IPProxyTool:python爬虫抓取免费代理IP并提取有效IP

IPProxyTool是一个使用Python编写的工具,它借助Scrapy爬虫来获取大量免费代理IP,然后从中提取有效的IP并存储在数据库中。项目的运行环境需要安装python3和mysql数据库以及cryptography模块,详细的安装步骤、项目的下载使用方法、各功能模块(如...

访问官网 →

【Github】项目名:IPProxyTool:python爬虫抓取免费代理IP并提取有效IP

一、项目简介

IPProxyTool是一个用Python编写的工具,它使用Scrapy爬虫来抓取代理网站,从而获取大量的免费代理IP。之后会对这些IP进行过滤,将所有可用的IP提取出来并存入数据库,以备后续使用。

二、项目运行环境安装

需要安装python3和mysql数据库以及cryptography模块。安装环境的命令如下:

  1. sudo yum install gcc libffi – devel python – devel ssl – devel
  2. pip install -r requirements.txt

三、下载使用

  1. 将项目克隆到本地:$git clone https://github.com/awolfly9/IPProxyTool.git
  2. 进入工程目录:$cd IPProxyTool
  3. 修改mysql数据库配置config.py中database_config的用户名和密码为数据库的用户名和密码:$vim config.py
  4. 导入数据表结构:
    1. $mysql> create database ipproxy;
    2. $mysql> use ipproxy;
    3. $mysql> source ‘/你的项目目录/db.sql’
  5. 运行启动脚本ipproxytool.py,也可以分别运行抓取,验证,服务器接口脚本(运行方法参考项目说明),还新增了异步验证方式(运行方法为$python ipproxytool.py async)。

四、项目功能模块

  1. 抓取代理网站

    所有抓取代理网站的代码都在proxy扩展。若要抓取其他的代理网站:

    1. 在proxy目录下新建脚本并继承自BaseSpider。
    2. 设置name、urls、headers。
    3. 重写parse_page方法,提取代理数据。
    4. 将数据存入数据库(具体可以参考ip181 kuaidaili)。
    5. 如果需要抓取特别复杂的代理网站,可以参考peuland。修改run_crawl_proxy.py导入抓取库,添加到抓取队列,可以单独运行run_crawl_proxy.py脚本开始抓取代理网站($python run_crawl_proxy.py)。
  2. 验证代理IP是否有效

    目前验证方式:

    1. 从上一步抓取并存储的数据库中取出所有的代理IP。
    2. 利用取出的代理IP去请求httpbin。
    3. 根据请求结果判断出代理IP的有效性,是否支持HTTPS以及匿名度,并存储到表httpbin中。
    4. 从httpbin表中取出代理去访问目标网站,例如豆瓣。
    5. 如果请求在合适的时间返回成功的数据,则认为这个代理IP有效。并且存入相应的表中(一个目标网站对应一个脚本)。所有验证代理ip的代码都在validator扩展。
    6. 若要验证其他网站:
      1. 在validator目录下新建脚本并继承Validator。
      2. 设置name、timeout、urls、headers。
      3. 然后调用init方法(可以参考baidudouban)。
      4. 如果需要特别复杂的验证方式,可以参考assetstore。修改run_validator.py导入验证库,添加到验证队列,可以单独运行run_validator.py开始验证代理ip的有效性($python run_validator.py)。
  3. 获取代理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的抓取、验证和获取等功能,并且在不断更新优化,如添加多数据库支持、更多筛选条件、多进程验证等是未来的计划。欢迎大家在评论区留言讨论该项目相关的任何问题或者分享自己的使用经验。

项目地址

GitHub链接直达