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+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
图解Python变量与赋值
Apr 03 Python
python实现读Excel写入.txt的方法
Apr 29 Python
Python中的取模运算方法
Nov 10 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
python从入门到精通 windows安装python图文教程
May 18 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python检测服务器端口代码实例
Aug 31 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
python中的random模块和相关函数详解
Apr 22 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快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
php xhprof使用实例详解
2019/04/15 PHP
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
数控专业大学生的自我鉴定
2013/11/13 职场文书
会计主管岗位职责
2014/01/03 职场文书
党校学习自我鉴定
2014/02/24 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
检讨书格式
2015/01/23 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
小学中队委竞选稿
2015/11/20 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python
P站美图推荐——变身女主角特辑
2022/03/20 日漫
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js