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抓取网页时字符集转换问题处理方案分享
Jun 19 Python
centos系统升级python 2.7.3
Jul 03 Python
python的re模块应用实例
Sep 26 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python实现决策树
Dec 21 Python
python实现教务管理系统
Mar 12 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
python实现电子书翻页小程序
Jul 23 Python
python3.6连接mysql数据库及增删改查操作详解
Feb 10 Python
基于python实现把json数据转换成Excel表格
May 07 Python
python基础之文件操作
Oct 24 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php中cookie的使用方法
2014/03/29 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
深入解析Python编程中super关键字的用法
2016/06/24 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
Python简单I/O操作示例
2019/03/18 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
信访工作者先进事迹
2014/01/17 职场文书
教师个人年度总结
2015/02/11 职场文书
分享Python异步爬取知乎热榜
2022/04/12 Python