Linux + ProxyPool 搭建属于爬虫代理IP池

news/2024/7/18 12:32:44 标签: 爬虫, python, linux

前言:

爬虫达到一定速度时,大家都会遇到封Ip的情况,而搭建代理ip池是解决的最好方法,网络上有很多优秀的付费代理,但是作为白嫖党的我们又怎么能付钱那,本文将教会大家用一个成熟的开源项目搭建代理池。

项目介绍:

ProxyPool

在这里插入图片描述

爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库,定时验证入库的代理保证代理的可用性,提供API和CLI两种使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。

ProxyPool

爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库,定时验证入库的代理保证代理的可用性,提供API和CLI两种使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。

文档地址: document
支持版本:python2/python3

运行项目

下载代码:
  • git clone
git clone git@github.com:jhao104/proxy_pool.git
  • releases
https://github.com/jhao104/proxy_pool/releases 下载对应zip文件
安装依赖:
pip install -r requirements.txt
更新配置:
python"># setting.py 为项目配置文件

# 配置API服务

HOST = "0.0.0.0"               # IP
PORT = 5000                    # 监听端口


# 配置数据库

DB_CONN = 'redis://:pwd@127.0.0.1:8888/0'


# 配置 ProxyFetcher

PROXY_FETCHER = [
    "freeProxy01",      # 这里是启用的代理抓取方法名,所有fetch方法位于fetcher/proxyFetcher.py
    "freeProxy02",
    # ....
]

启动项目:

# 如果已经具备运行条件, 可用通过proxyPool.py启动。
# 程序分为: schedule 调度程序 和 server Api服务

# 启动调度程序
python proxyPool.py schedule

# 启动webApi服务
python proxyPool.py server

使用

  • Api

启动web服务后, 默认配置下会开启 http://127.0.0.1:5010 的api接口服务:

apimethodDescriptionarg
/GETapi介绍None
/getGET随机获取一个代理None
/get_allGET获取所有代理None
/get_statusGET查看代理数量None
/deleteGET删除代理proxy=host:ip

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

python">import requests

def get_proxy():
    return requests.get("http://127.0.0.1:5010/get/").json()

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().get("proxy")
    while retry_count > 0:
        try:
            html = requests.get('http://www.example.com', proxies={"http": "http://{}".format(proxy)})
            # 使用代理访问
            return html
        except Exception:
            retry_count -= 1
    # 删除代理池中代理
    delete_proxy(proxy)
    return None
console.log("公众号:虫术")
console.log("wx:spiderskill")
欢迎大家前来交流

http://www.niftyadmin.cn/n/997508.html

相关文章

P1082 找朋友

描述 童年的我们,对各种事物充满了好奇与向往。这天,小朋友们对数字产生了兴趣,并且想和数字交朋友。可是,怎么分配这些数字才能使得每个小朋友都唯一地找到一个数字朋友呢?C小朋友说:咱们按自己…

插件绑定

2019独角兽企业重金招聘Python工程师标准>>> Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。例如项目编译这一任务,它对应了defa…

python链接mysql数据库

import MySQLdb connMySQLdb.connect(host127.0.0.1,userroot,passwd123456,db08day5) curconn.cursor() #打开数据库 #提取数据 reCountcur.execute(select * from admin) data cur.fetchall() print reCount print data #关闭数据 cur.close() conn.close()转载于:https://bl…

IDA动态调试

1、把本地server文件推送进手机目录 adb push android_x86_server(cpu型号要对应 模拟器是x86) /data/local/tmp/ 2、进入手机shell adb shell 3、进入手机tmp目录 cd /data/local/tmp/ 4、修改权限 chmod 777 android_server 5、运行 ./android_server 6、在本地执行…

JSP 结构

网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面。 容器负责截获对JSP页面的请求。本教程使用内嵌JSP容器的Apache来支持JSP开发。 JSP容器与Web服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务,并且能够正确识别专属于…

自控力

看了知乎的大牛回答,总结出行之有效的实践方法 https://www.zhihu.com/question/35957038https://www.zhihu.com/question/37422532 自控力: 自我愿望和意志力的统一 平衡因子: 我想要 - 目标 我要做 - 达成目标的行动 我不要 - 达不到目标的…

hdfs 本地 winutils.exe (Could not locate executable null\bin\winutils.exe in t)

下载 hadoop-common-bin 中含有 winutils.exe : http://download.csdn.net/download/knight_black_bob/9722051 hdfs 本地 (win) 报没有找到 winutils.exe 严重: Failed to locate the winutils binary in the hadoop binary path java.io…

CORS 头缺少 ‘Access-Control-Allow-Origin‘解决办法

服务端 from flask import Flask, request,make_response,jsonify app.route("/api/page1/run/list", methods["GET"]) def check():res make_response(jsonify({code: 0, data: {list:data}}))res.headers[Access-Control-Allow-Origin] *res.headers[…