从mysql中取出代理ip_GitHub - lican09/IPProxyTool: 抓取大量免费代理 ip,提取有效 ip 使用...

IPProxyTool

使用 scrapy 爬虫抓取代理网站,获取大量的免费代理 ip。过滤出所有可用的 ip,存入数据库以备使用。

可以访问我的个人站点,查看我的更多有趣项目 awolfly9

个人项目欢迎加微信吐槽

weixin.png

如果在使用中有任何疑问,或者项目中有任何槽点你觉得不满意都可以加我微信向我吐槽。不吐不快~

运行环境

python 2.7.12

运行依赖包

scrapy

BeautifulSoup

requests

pymysql

web.py

scrapydo

lxml

安装 mysql 并启动

安装命令:

$ pip install Scrapy BeautifulSoup requests pymysql web.py scrapydo lxml

下载使用

将项目克隆到本地

$ git clone https://github.com/awolfly9/IPProxyTool.git

进入工程目录

$ cd IPProxyTool

修改 mysql 数据库配置 config.py 中 database_config 的用户名和密码为数据库的用户名和密码

$ vim config.py

---------------

database_config = {

'host': 'localhost',

'port': 3306,

'user': 'root',

'password': '123456',

'charset': 'utf8',

}

运行启动脚本 ipproxytool.py 也可以分别运行抓取,验证,服务器接口脚本,运行方法参考项目说明

$ python ipproxytool.py

如果更新后运行报错,请先删除本地数据库。

项目说明

抓取代理网站

所有抓取代理网站的代码都在 proxy

扩展抓取其他的代理网站

1.在 proxy 目录下新建脚本并继承自 BaseSpider

2.设置 name、urls、headers

3.重写 parse_page 方法,提取代理数据

4.将数据存入数据库 具体可以参考 ip181 kuaidaili

5.如果需要抓取特别复杂的代理网站,可以参考peuland

修改 runspider.py 导入抓取库,添加到抓取队列

可以单独运行 runspider.py 脚本开始抓取代理网站

$ python runspider.py

验证代理 ip 是否有效

目前验证方式:

1.从上一步抓取并存储的数据库中取出所有的代理 IP

2.利用取出的代理 IP 去请求 httpbin

3.根据请求结果判断出代理 IP 的有效性,是否支持 HTTPS 以及匿名度,并存储到表 httpbin 中

4.从 httpbin 表中取出代理去访问目标网站,例如 豆瓣

5.如果请求在合适的时间返回成功的数据,则认为这个代理 IP 有效。并且存入相应的表中

一个目标网站对应一个脚本,所有验证代理 ip 的代码都在 validator

扩展验证其他网站

1.在 validator 目录下新建脚本并继承 Validator

2.设置 name、timeout、urls、headers

3.然后调用 init 方法,可以参考 baidu douban

4.如果需要特别复杂的验证方式,可以参考 assetstore

修改runvalidator.py 导入验证库,添加到验证队列

可以单独运行 runvalidator.py 开始验证代理ip的有效性

$ python runvalidator.py

获取代理 ip 数据服务器接口

在 config.py 中修改启动服务器端口配置 data_port,默认为 8000

启动服务器

$ python runserver.py

服务器提供接口

获取

参数

Name

Type

Description

must

name

str

数据库名称

anonymity

int

1:高匿 2:匿名 3:透明

https

str

https:yes http:no

order

str

table 字段

sort

str

asc 升序,desc 降序

count

int

获取代理数量,默认 100

删除

参数

Name

Type

Description

是否必须

name

str

数据库名称

ip

str

需要删除的 ip

插入

参数

Name

Type

Description

是否必须

name

str

数据库名称

ip

str

ip 地址

port

str

端口

country

str

国家

anonymity

int

1:高匿,2:匿名,3:透明

https

str

yes:https,no:http

speed

float

访问速度

source

str

ip 来源

TODO

参考

项目更新

-----------------------------2017-3-30----------------------------

1.修改完善 readme

2.数据插入支持事务

-----------------------------2017-3-14----------------------------

1.更改服务器接口,添加排序方式

2.添加多进程方式验证代理 ip 的有效性

-----------------------------2017-2-20----------------------------

1.添加服务器获取接口更多筛选条件

-----------------------------2017-2-16----------------------------

1.验证代理 IP 的匿名度

2.验证代理 IP HTTPS 支持

3.添加 httpbin 验证并发数设置,默认为 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值