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中实现php的var_dump函数功能
Jan 21 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
Python 闭包的使用方法
Sep 07 Python
python实现时间o(1)的最小栈的实例代码
Jul 23 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
Apr 17 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
Django haystack实现全文搜索代码示例
Nov 28 Python
python中random模块详解
Mar 01 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写的基于Memcache的Queue实现代码
2011/11/27 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
许愿墙中用到的函数
2006/10/07 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
js中apply和call的理解与使用方法
2019/11/27 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
Python with语句用法原理详解
2020/07/03 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
管理建议书范文
2014/05/13 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
设置IIS Express并发数
2022/07/07 Servers
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android