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 opencv3实现人脸识别(windows)
May 25 Python
Python多进程写入同一文件的方法
Jan 14 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
python3.5安装python3-tk详解
Apr 26 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
python 魔法函数实例及解析
Sep 25 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
Python检测端口IP字符串是否合法
Jun 05 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
屏蔽IE弹出"您查看的网页正在试图关闭窗口,是否关闭此窗口"的方法
2013/12/31 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python字符串格式化输出方法分析
2016/04/13 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
Python生成词云的实现代码
2020/01/14 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
德尔福集团DELPHI的笔试题
2012/02/22 面试题
CNC数控操作工岗位职责
2013/11/19 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
超市总经理岗位职责
2014/02/02 职场文书
大学生社会实践评语
2014/04/25 职场文书
办公室主任个人总结
2015/02/28 职场文书
小兵张嘎观后感
2015/06/03 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python