python爬虫利用代理池更换IP的方法步骤


Posted in Python onFebruary 21, 2021

0. 前言

周日在爬一个国外网站的时候,发现用协程并发请求,并且请求次数太快的时候,会出现对方把我的服务器IP封掉的情况。于是网上找了一下开源的python代理池,这里选择的是star数比较多的proxy_pool

1. 安装环境

# 安装python虚拟环境, python环境最好为python3.6,再往上的话,安装依赖时会报错
sudo apt update
sudo apt install python3.6
pip3 install virtualenv
virtualenv venv --python=python3.6
source venv/bin/activate

# 安装redis
sudo apt install redis-server
# 启动redis server
redis-server

 2. 安装依赖

git clone https://github.com/jhao104/proxy_pool.git
cd proxy_pool
pip install -r requirements.txt

3. 修改配置文件

# 修改setting.py 

# 配置API服务

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

# 配置数据库

# 以下为三个示例,根据redis的配置,选择其中一种即可
# 一般启动redis时如果没有配置文件,那么选择第一种即可
# 1. Redis IP: 127.0.0.1 Port: 6379
DB_CONN = 'redis://@127.0.0.1:6379'
# 2. Redis IP: 127.0.0.1 Port: 6379 Password: 123456
DB_CONN = 'redis://:123456@127.0.0.1:6379'
# 3. Redis IP: 127.0.0.1 Port: 6379 Password: 123456 DB: 15
DB_CONN = 'redis://:123456@127.0.0.1:6379/15'

 

# 配置 ProxyFetcher

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

4. 启动

# 可以用tmux开三个窗口

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

# 启动webApi服务
python proxyPool.py server

5. 测试

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

python爬虫利用代理池更换IP的方法步骤

更多的用法和文档请参考:document 和 https://github.com/jhao104/proxy_pool

到此这篇关于python爬虫利用代理池更换IP的方法步骤的文章就介绍到这了,更多相关python 代理池更换IP内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现LRU算法的2种方法
Jun 24 Python
Python中Class类用法实例分析
Nov 12 Python
Python编写电话薄实现增删改查功能
May 07 Python
Python 忽略warning的输出方法
Oct 18 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
python实现电子产品商店
Feb 26 Python
python定时任务 sched模块用法实例
Nov 04 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
Python读取csv文件实例解析
Dec 30 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 Python
Python中的 enumerate和zip详情
May 30 Python
Python用requests库爬取返回为空的解决办法
Feb 21 #Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 #Python
python实现图片转字符画的完整代码
Feb 21 #Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 #Python
Scrapy实现模拟登录的示例代码
Feb 21 #Python
scrapy-splash简单使用详解
Feb 21 #Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 #Python
You might like
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
php计算一个文件大小的方法
2015/03/30 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
解析Python3中的Import
2019/10/13 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
高中自我评价分享
2013/12/05 职场文书
银行求职信个人范文
2013/12/16 职场文书
工商管理实习生自我鉴定范文
2013/12/18 职场文书
小学生家长评语大全
2014/02/10 职场文书
终止劳动合同协议书
2014/04/14 职场文书
优质服务演讲稿
2014/05/14 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
工程项目合作意向书
2015/05/08 职场文书
家长会开场白和结束语
2015/05/29 职场文书
运动会通讯稿200字
2015/07/20 职场文书
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python