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实现斐波那契递归函数的方法
Sep 08 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
python用插值法绘制平滑曲线
Feb 19 Python
python获取服务器响应cookie的实例
Dec 28 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python线程池如何使用
May 28 Python
Python模拟登录和登录跳转的参考示例
Oct 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连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP安全配置
2006/12/06 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python中optparser库用法实例详解
2018/01/26 Python
Python绘制热力图示例
2019/09/27 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
python opencv肤色检测的实现示例
2020/12/21 Python
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
现代化办公人员工作的自我评价
2013/10/16 职场文书
查环查孕证明
2014/01/10 职场文书
安全事故检讨书
2014/01/18 职场文书
暑假学习心得体会
2014/09/02 职场文书
讲座通知范文
2015/04/23 职场文书
生日宴会祝酒词
2015/08/10 职场文书
python中requests库+xpath+lxml简单使用
2021/04/29 Python
SQL Server中锁的用法
2022/05/20 SQL Server