python代理池存入sql_用Python实现代理池(Proxy Pool)系统-Go语言中文社区

ProxyPool.svg?branch=master

跨语言高性能IP代理池,Python实现。

注意:请运行程序前先更新一下抓取代理的函数。

运行环境

Python 3.5

(请务必保证Python的版本在3.5以上,否则异步检验无法使用。)

Redis

Redis官网并没有提供Windows的安装版,Windows用户可以点击此处下载一个我自己编译的二进制版本(3.2版本2.7MB,VS 2015编译)。

安装

① 直接使用

安装依赖

$ pip install -r requirements.txt

Windows用户如果无法安装lxml库请点击这里。

打开代理池和API

$ cd proxypool

$ python3 run.py

② 安装使用

安装

$ cd proxypool

$ python setup.py install

打开代理池和API

$ proxypool_run

③ 使用二进制包

Windows 用户可以点击此处获取此程序的二进制包,直接运行。

使用API获取代理

访问http://127.0.0.1:5000/进入主页,如果显示’Welcome’,证明成功启动。

1.png

访问http://127.0.0.1:5000/get可以获取一个可用代理。

3.png

访问http://127.0.0.1:5000/count可以获取代理池中可用代理的数量。

2.png

也可以在程序代码中用相应的语言获取,例如:

import requests

from bs4 import BeautifulSoup

import lxml

def get_proxy():

r = requests.get('http://127.0.0.1:5000/get')

proxy = BeautifulSoup(r.text, "lxml").get_text()

return proxy

各模块功能

proxyGetter.py

爬虫模块

class proxypool.proxyGetter.FreeProxyGetter爬虫类,用于抓取代理源网站的代理,用户可复写和补充抓取规则。

schdule.py

调度器模块

class proxypool.schdule.VaildityTester异步检测类,可以对给定的代理的可用性进行异步检测。

class proxypool.schdule.PoolAdder代理添加器,用来触发爬虫模块,对代理池内的代理进行补充,代理池代理数达到阈值时停止工作。

class proxypool.schdule.Schedule代理池启动类,运行RUN函数时,会创建两个进程,负责对代理池内容的增加和更新。

db.py

Redis数据库连接模块

class proxypool.db.RedisClient数据库操作类,维持与Redis的连接和对数据库的增删查该,

error.py

异常模块

class proxypool.error.ResourceDepletionError资源枯竭异常,如果从所有抓取网站都抓不到可用的代理资源,

则抛出此异常。

class proxypool.error.PoolEmptyError代理池空异常,如果代理池长时间为空,则抛出此异常。

api.py

API模块,启动一个Web服务器,对外提供代理的获取功能。

utils.py

工具箱

setting.py

设置

4.png

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/WiseDoge/article/details/60775682

站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

发表于 2020-02-25 01:33

阅读 ( 112 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值