python 爬虫工具 butter_GitHub - TheButterflyOdor/proxy_pool: Python爬虫代理IP池(proxy pool)

爬虫IP代理池

______ ______ _

| ___ \_ | ___ \ | |

| |_/ / \__ __ __ _ __ _ | |_/ /___ ___ | |

| __/| _// _ \ \ \/ /| | | || __// _ \ / _ \ | |

| | | | | (_) | > < \ |_| || | | (_) | (_) || |___

\_| |_| \___/ /_/\_\ \__ |\_| \___/ \___/ \_____\

__ / /

/___ /

下载安装

下载源码:

git clone git@github.com:jhao104/proxy_pool.git

或者直接到https://github.com/jhao104/proxy_pool 下载zip文件

安装依赖:

pip install -r requirements.txt

配置Config.ini:

# Config.ini 为项目配置文件

# 配置DB

type = SSDB # 如果使用SSDB或redis数据库,均配置为SSDB

host = localhost # db host

port = 8888 # db port

name = proxy # 默认配置

# 配置 ProxyGetter

freeProxyFirst = 1 # 这里是启动的抓取函数,可在ProxyGetter/getFreeProxy.py 扩展

freeProxySecond = 1

....

# 配置 HOST (api服务)

ip = 127.0.0.1 # 监听ip,0.0.0.0开启外网访问

port = 5010 # 监听端口

# 上面配置启动后,代理api地址为 http://127.0.0.1:5010

启动:

# 如果你的依赖已经安全完成并且具备运行条件,可以直接在Run下运行main.py

# 到Run目录下:

>>>python main.py

# 如果运行成功你应该看到有4个main.py进程

# 你也可以分别运行他们,

# 依次到Api下启动ProxyApi.py,Schedule下启动ProxyRefreshSchedule.py和ProxyValidSchedule.py即可.

使用

启动过几分钟后就能看到抓取到的代理IP,你可以直接到数据库中查看,推荐一个SSDB可视化工具。

Api

api

method

Description

arg

/

GET

api介绍

None

/get

GET

随机获取一个代理

None

/get_all

GET

获取所有代理

None

/get_status

GET

查看代理数量

None

/delete

GET

删除代理

proxy=host:ip

爬虫使用

如果要在爬虫代码中使用的话, 可以将此api封装成函数直接使用,例如:

import requests

def get_proxy():

return requests.get("http://127.0.0.1:5010/get/").content

def delete_proxy(proxy):

requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))

# your spider code

def getHtml():

# ....

retry_count = 5

proxy = get_proxy()

while retry_count > 0:

try:

html = requests.get('https://www.example.com', proxies={"http": "http://{}".format(proxy)})

# 使用代理访问

return html

except Exception:

retry_count -= 1

# 出错5次, 删除代理池中代理

delete_proxy(proxy)

return None

扩展代理

项目默认包含几个免费的代理获取方法,但是免费的毕竟质量不好,所以如果直接运行可能拿到的代理质量不理想。所以,提供了代理获取的扩展方法。

添加一个新的代理获取方法如下:

1、首先在GetFreeProxy类中添加你的获取代理的静态方法,

该方法需要以生成器(yield)形式返回host:ip格式的代理,例如:

class GetFreeProxy(object):

# ....

# 你自己的方法

@staticmethod

def freeProxyCustom(): # 命名不和已有重复即可

# 通过某网站或者某接口或某数据库获取代理 任意你喜欢的姿势都行

# 假设你拿到了一个代理列表

proxies = ["139.129.166.68:3128", "139.129.166.61:3128", ...]

for proxy in proxies:

yield proxy

# 确保每个proxy都是 host:ip正确的格式就行

2、添加好方法后,修改Config.ini文件中的[ProxyGetter]项:

在Config.ini的[ProxyGetter]下添加自定义的方法的名字:

[ProxyGetter]

;register the proxy getter function

freeProxyFirst = 0 # 如果要取消某个方法,将其删除或赋为0即可

....

freeProxyCustom = 1 # 确保名字和你添加方法名字一致

ProxyRefreshSchedule会每隔一段时间抓取一次代理,下次抓取时会自动识别调用你定义的方法。

问题反馈

任何问题欢迎在Issues 中反馈,如果没有账号可以去 我的博客中留言。

你的反馈会让此项目变得更加完美。

贡献代码

本项目仅作为基本的通用的代理池架构,不接收特有功能(当然,不限于特别好的idea)。

本项目依然不够完善,如果发现bug或有新的功能添加,请在Issues中提交bug(或新功能)描述,在确认后提交你的代码。

这里感谢以下contributor的无私奉献:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用计算机来线性拟合,Excel2019使用教程:绘制线性回归图

Excel的功能很强大&#xff0c;可以做各种数据处理和分析。想要检测两组数据是否具有线性关系&#xff0c;就可以使用excel2019来做一元线性回归分析图表&#xff0c;进行数据分析&#xff0c;从而根据结果来测试两组数据的关系。在excel2019中制作一元线性回归分析图表的方法很…

技术干货| 阿里云基于Hudi构建Lakehouse实践探索「内附干货PPT下载渠道」

简介&#xff1a; 阿里云高级技术专家王烨(萌豆)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件&#xff0c;本议题介绍了阿里云如何使用 Hudi 和 OSS 对象存储构建 Lakehouse&#xff0c;为大家分享了什么是 Lakehouse&#xff0c;阿里云数据库 OLAP 团队…

将 k8s 制作成 3D 射击游戏,好玩到停不下来 | 文末福利

作者 | 小碗汤来源 | 我的小碗汤今天演示一个项目&#xff0c;利用Unity做场景、用C#做交互逻辑&#xff0c;将k8s制作成一个3D射击游戏。正好最近在学习Unity&#xff0c;所以利用这个项目开始上手挺合适的。源码、可执行文件可以自行下载&#xff0c;也可在文末获取&#xff…

extjs grid 整行变颜色_EXTJS根据值Value改变gridpanel单元格背景颜色或者设置整行字体颜色...

第一步. 设置样式.reportColor4{background: #93A9C1;}.reportColor5{background: #EEEEEE;}第二步.修改单元格样式header : 流通类型,width : 80,sortable : true,align : center,dataIndex: BR_TYPE,// css : background: #acdaf4;, // -----设置整个单元格的样式&#xff0c…

Alibaba FFI -- 跨语言编程的探索

简介&#xff1a; 跨语言编程时现代程序语言中非常重要的一个方向&#xff0c;也被广泛应用于复杂的设计与实现中。 跨语言编程是现代程序语言中非常重要的一个方向&#xff0c;也被广泛应用于复杂系统的设计与实现中。本文是 GIAC 2021(全球互联网架构大会) 中关于 Alibaba …

世界通信简史

作者 | 小枣君来源 | 鲜枣课堂█ 萌芽期&#xff1a;现代通信的诞生公元前600年左右&#xff0c;古希腊哲学家泰勒斯闲着没事&#xff0c;拿家里的琥珀棒蹭一只小猫。 蹭着蹭着&#xff0c;他发现&#xff0c;琥珀棒把小猫的毛都吸起来了。 现在我们都知道&#xff0c;这是因为…

Linux内核社区迁移到github?

简介&#xff1a; github是目前最火的开源软件代码托管平台&#xff0c;那么Linux内核社区能否迁移到github上呢&#xff1f;Intel的Daniel Vetter写了一篇关于这个问题的博客&#xff0c;他给出的答案是NO。至于这个答案是否公允&#xff0c;就留给读者自己来判断了。 本文主…

表单提交连续点击html,通过提交“点击”触发器提交两次HTML表单

对于发布类似于SO近100个问题的问题&#xff0c;我很抱歉。我读了很多&#xff0c;尝试了几个解决方案&#xff0c;但无法解决我的问题&#xff0c;或者完全将答案与我的问题联系起来。通过提交“点击”触发器提交两次HTML表单我有一个form与一个动作&#xff0c;键入帖子。我有…

mybatis转义反斜杠_mybatis参数格式化异常:NumberFormatException: For input string:xx

使用mybatis注解开发的时候&#xff0c;总会遇到很多问题&#xff0c;但是mybatis的注解并不是那么的美好&#xff0c;一些问题或者错误根本不能给出准确的定位&#xff0c;有时候&#xff0c;甚至会给出Unknow Source的错误&#xff0c;获取就是一个关闭标签没有关上。此类问题…

如何避免出现SQL注入漏洞

简介&#xff1a; 本文将针对开发过程中依旧经常出现的SQL编码缺陷&#xff0c;讲解其背后原理及形成原因。并以几个常见漏洞存在形式&#xff0c;提醒技术同学注意相关问题。最后会根据原理&#xff0c;提供解决或缓解方案。 作者 | 阿里云安全团队 来源 | 阿里技术公众号 ‍‍…

「CSDN 2021年度 IT 技术影响力之星评选」活动报名倒计时!

“CSDN 2021年度IT技术影响力之星评选”活动自2021年12月6日启动以来受到了行业各界的关注以及企业和个人的积极响应&#xff0c;截止目前&#xff0c;已收到上千份参评报名。本次评选活动的第一阶段——企业/个人参与提名将于2022年1月30日结束&#xff0c;以真实数据为基础&a…

技术人员的一点产品思维思考

简介&#xff1a; 作为一线的开发人员&#xff0c;大家是不是都经历过和产品吵得不可开焦&#xff0c;甚至最后谁也无法说服谁&#xff0c;最后只能由老板出面解决的经历。而大多数情况老板还真能以某种方法去解决&#xff0c;并且是一个双方都能接受的方案。然而这不全是因为老…

北语18春《计算机网络技术》作业4,北语18春《计算机网络技术》作业4

------------------------------------------------------------------------------------------------------------------------------ (单选题) 1: 在数据链路层对局域网进行扩展使用的是&#xff3f;,它根据MAC帧的目的地址对收到的帧进行转发。A: 转发器B: 集线器C: 网桥D:…

chrome插件上传csv_Chrome插件推荐

从 IE 到 Chrome &#xff0c;期间使用了很多浏览器&#xff0c;搜狗、360、2345、傲游等等&#xff0c;最后选择了 Chrome &#xff0c;一直到现在&#xff0c;在使用的过程中发现一些好用的插件&#xff08;扩展程序&#xff09;&#xff0c;在此推荐给大家。PS&#xff1a;使…

OpenKruise v0.10.0 版本发布:新增应用弹性拓扑管理、应用防护等能力

简介&#xff1a; 阿里云开源的云原生应用自动化管理套件、CNCF Sandbox 项目 -- OpenKruise&#xff0c;今天发布 v0.10.0 新版本&#xff0c;这也会是 OpenKruise v1.0 之前的最后一个 minor 版本。 本文将带你一览 v0.10.0 的新变化&#xff0c;其中新增的 WorkloadSpread、…

极验创始人吴渊:恶意流量威胁新趋势,洞察网络黑产3大核心本质

天下没有免费的午餐&#xff0c;更没有免费的流量。以电商为例&#xff0c;最疯狂的时候&#xff0c;某电商平台单个获客成本接近400元。作为互联网的稀缺资源&#xff0c;流量的成本不断冲击着企业运营红线。 而就当企业盯着成本、守着转化时&#xff0c;网络黑产已完成对平台…

来啊,来魔改啊,人生重开模拟器一键托管上线

简介&#xff1a; 云开发平台将“人生重开模拟器”fork到了云开发的仓库了&#xff0c;用户只需要直接fork到自己的仓库以后就可以在云开发平台上进行快速魔改和一键部署&#xff0c;绑定自己的域名就能够让小伙伴们一起来感受你的魔改创意哦。 人生无法重来&#xff0c;游戏可…

内大计算机学院,内蒙古大学:计算机学院

计算机学院是全区高等学校中最早建立的专门培养计算机专业技术中高级人才的教学与科研单位。学院由计算机科学系、软件工程系、信息工程管理系、计算(实验)中心等教学单位组成&#xff0c;设有计算机网络与信息安全、人工智能与蒙古文信息处理、计算机软件与理论和管理科学与工…

python动态类型的坑_python进阶教程之动态类型详解

动态类型(dynamic typing)是Python另一个重要的核心概念。我们之前说过&#xff0c;Python的变量(variable)不需要声明&#xff0c;而在赋值时&#xff0c;变量可以重新赋值为任意值。这些都与动态类型的概念相关。动态类型在我们接触的对象中&#xff0c;有一类特殊的对象&…

从边缘到云,万物互联时代Aruba的技术经

作者 | 宋慧 出品 | CSDN 云计算 网络&#xff0c;是重要的 IT 基础设施之一。在 2021 年底&#xff0c;国际分析机构 Gartner 发布了本年度企业有线和无线局域网基础设施魔力象限&#xff0c;HPE 旗下公司 Aruba 连续第十六年被列入领导者象限。更早一些的 2021 年 Gartner 广…