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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
跟老齐学Python之用while来循环
Oct 02 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 Python
python Crypto模块的安装与使用方法
Dec 21 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
深入了解Python 变量作用域
Jul 24 Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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
第十一节--重载
2006/11/16 PHP
wordpress之wp-settings.php
2007/08/17 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
循环 vs 递归浅谈
2013/02/28 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
python实现批量修改文件名代码
2017/09/10 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python实现随机漫步方法和原理
2019/06/10 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
毕业生的自我评价
2013/12/30 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
销售经理岗位职责
2014/03/16 职场文书
师范生求职自荐信
2014/06/14 职场文书
员工生日活动方案
2014/08/24 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
解析python中的jsonpath 提取器
2022/01/18 Python