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实现将文本转换成语音的方法
May 28 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
详解Python函数式编程—高阶函数
Mar 29 Python
PyQt5实现简易电子词典
Jun 25 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 Python
python - timeit 时间模块
Apr 06 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语法(2)
2006/10/09 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
php实现数字补零的方法总结
2018/09/12 PHP
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
详解参数传递四种形式
2015/07/21 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
python机器学习之神经网络(一)
2017/12/20 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python binascii 进制转换实例
2019/06/12 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
会计人员岗位职责
2014/03/19 职场文书
闭幕式主持词
2014/04/02 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
消防宣传口号
2014/06/16 职场文书
求职意向书范本
2015/05/11 职场文书
硕士学位申请报告
2015/05/15 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL