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比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
如何在Python中实现goto语句的方法
May 18 Python
python下载库的步骤方法
Oct 12 Python
python画环形图的方法
Mar 25 Python
Python unittest框架操作实例解析
Apr 13 Python
python中有函数重载吗
May 28 Python
Python如何读取、写入CSV数据
Jul 28 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
Python非单向递归函数如何返回全部结果
Dec 18 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JS模板实现方法
2013/04/03 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
详解python3中的真值测试
2018/08/13 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
Python识别验证码的实现示例
2020/09/30 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
高中数学教师求职信
2013/10/30 职场文书
机械专业应届生求职信
2013/12/12 职场文书
关于幼儿的自我评价
2013/12/18 职场文书
产品质量保证书范本
2015/02/27 职场文书
设备技术员岗位职责
2015/04/11 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
感恩教育主题班会
2015/08/12 职场文书
Python之基础函数案例详解
2021/08/30 Python