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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
决策树的python实现方法
Nov 18 Python
Python打印斐波拉契数列实例
Jul 07 Python
Python实现堆排序的方法详解
May 03 Python
python Socket之客户端和服务端握手详解
Sep 18 Python
使用PyInstaller将python转成可执行文件exe笔记
May 26 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
python爬虫中的url下载器用法详解
Nov 30 Python
浅谈Python中的函数(def)及参数传递操作
May 25 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 dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
Python基于requests库爬取网站信息
2020/03/02 Python
初学者学习Python好还是Java好
2020/05/26 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
儿科护士实习自我鉴定
2013/10/17 职场文书
大学生秋游活动方案
2014/02/17 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
导游词300字
2015/02/13 职场文书
交流会主持词
2015/07/02 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书