ProxyPool介绍

ProxyPool是一个小巧的代理ip抓取+评估+存储+展示的一体化的工具,可自动化的搜集检测可用代理并进行评分,并添加了web展示和API接口。可视为小型的代理池

ProxyPool功能

  • 每天从多个代理ip网站上抓下最新高匿ip数据。
  • 经过筛选后的ip将存入数据库。
  • 存入数据库的ip每天也要经过测试,存在剔除、评分机制,多次不合格的ip将被删除,每个ip都被评分,我们最终可以按得分排名获得稳定、低响应时间的优质ip。

ProxyPool安装

$ git clone https://github.com/TideSec/Proxy_Pool

mysql创建数据库proxy,导入proxy.sql,include/config.inc.php中修改数据库密码。

ProxyPool – 自动化代理池,爬取代理IP并进行测速筛选安装python2依赖库

pip install lxml
pip install requests
pip install pymysql

在py_proxy_task/config.py文件中配置数据库连接信息及其他参数。

ProxyPool使用

proxy_get.pyproxy_check.py
$ python proxy_get.py 
$ python proxy_check.py

之后按默认配置,这两个程序每天分别执行抓取和评估工作,放服务器上长期运行即可。

ProxyPool使用代理Demo

python

# 访问数据库拿到代理
ip_list = []
try:
cursor.execute('SELECT content FROM %s' % cfg.TABLE_NAME)
result = cursor.fetchall()
for i in result:
ip_list.append(i[0])
except Exception as e:
print e
finally:
cursor.close()
conn.close()

# 利用代理抓取豆瓣页面
for i in ip_list:
proxy = {'http': 'http://'+i}
url = "https://www.douban.com/"
r = requests.get(url, proxies=proxy, timeout=4)
print r.text

详见crawl_demo.py。

ProxyPool参数设置

在py_proxy_task/config.py文件可进行代理评估参数的设置。

USELESS_TIME = 4 # 最大失效次数
SUCCESS_RATE = 0.8
TIME_OUT_PENALTY = 10# 超时惩罚时间
CHECK_TIME_INTERVAL = 24*3600# 每天更新一次

除数据库配置参数外,主要用到的几个参数说明如下:

USELESS_TIMESUCCESS_RATEipUSELESS_TIME < 4 && SUCCESS_RATE < 0.8TIME_OUT_PENALTYresponse_timeCHECK_TIME_INTERVAL

ProxyPool策略

USELESS_TIMESUCCESS_RATEscore = (success_rate + test_times / 500) / avg_response_timescore = success_rate / avg_response_time

代理池是我们项目中常见的需求,自己维护代理池可省下一些费用,但需投入更多的维护成本。

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。