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 提取文件的小程序
Jul 29 Python
python实现360皮肤按钮控件示例
Feb 21 Python
Python实现的简单hangman游戏实例
Jun 28 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
python技能之数据导出excel的实例代码
Aug 11 Python
import的本质解析
Oct 30 Python
Flask之请求钩子的实现
Dec 23 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
python函数的万能参数传参详解
Jul 26 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
python中的错误如何查看
Jul 08 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往windows中添加用户
2006/12/06 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
判断网页编码的方法python版
2016/08/12 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
幼儿园中秋节活动方案2013
2014/01/29 职场文书
八一建军节活动方案
2014/02/10 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
文明寝室申报材料
2014/05/12 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
护士医德考评自我评价
2015/03/03 职场文书
居委会工作总结2015
2015/05/18 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
Python列表的索引与切片
2022/04/07 Python
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python