【Python_Scrapy学习笔记(十)】基于Scrapy框架的下载器中间件创建代理IP池

news/2025/3/15 21:14:22/

基于Scrapy框架的下载器中间件创建代理IP池

前言

本文中介绍 如何基于 Scrapy 框架的下载器中间件创建代理IP池。

正文

1、添加中间件的流程

  1. 在 middlewares.py 中新建 代理IP 中间件类
  2. 在 settings.py 中添加此下载器中间件,设置优先级并开启

2、基于Scrapy框架的下载器中间件创建User-Agent池的具体操作

  1. 在 middlewares.py 中新建 代理IP 中间件类

    # 中间件2:随机的代理
    import random
    from .proxies import proxy_lstclass BaiduRandomProxyDownloaderMiddleware(object):def process_request(self, request, spider):"""创建代理IP池:param request::param spider::return:"""proxy = random.choice(proxy_lst)# 如何包装到请求对象中去?# 使用meta属性# 作用1:在不同解析函数之间传递数据 作用2:可以定义代理request.meta['proxy'] = proxyprint(proxy)def process_exception(self, request, exception, spider):"""处理异常:代理IP可能不能用,scrapy会自动尝试3次抛出异常,需要一直尝试:param request::param exception::param spider::return:"""# Called when a download handler or a process_request()# (from other downloader middleware) raises an exception.# Must either:# - return None: continue processing this exception# - return a Response object: stops process_exception() chain# - return a Request object: stops process_exception() chainreturn request```
    **注意1:因代理IP质量不一,故当遇到无效的代理 IP 时需要捕获异常更换 IP,或重新尝试,Scrapy 框架提供了 process_exception() 方法进行异常的捕获。**```pythondef process_exception(self,request,exception,spider):return request
    

    注意2:from .proxies import proxy_lst 是在项目目录下创建的存放代理 IP 的 py 文件

    proxy_lst = ['http://27.42.168.46:55481','http://61.216.185.88:60808',
    ]
    

    在这里插入图片描述

  2. 在 settings.py 中添加此下载器中间件,设置优先级并开启

    # Enable or disable downloader middlewares
    # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
    # 开启中间件
    DOWNLOADER_MIDDLEWARES = {"BaiduMiddle.middlewares.BaidumiddleDownloaderMiddleware": 543,"BaiduMiddle.middlewares.BaiduRandomProxyDownloaderMiddleware": 300,
    }
    
  3. 运行效果
    在这里插入图片描述
    可以看到通过 代理IP 成功访问了百度。


http://www.ppmy.cn/news/48184.html

相关文章

汽车基础软件信息安全与AUTOSAR

AUTOSAR 信息安全框架和关键技术分析 随着汽车网联化和智能化,汽车不再孤立,越来越多地融入到互联网中。在这同时,汽车也慢慢成为潜在的网络攻击目标,汽车的网络安全已成为汽车安全的基础,受到越来越多的关注和重视。AUTOSAR 作为目前全球范围普遍认可的汽车嵌入式软件架…

[线上故障][坑] spring的自动装配和事务不生效

哪些年的故障 spring自动装备 方案1 <context:annotation-config scan/ > autowired byType Qulified Resource byName 不建议, 二选一, 自动选择同名的. Autowired与Resource异同&#xff1a; 1、Autowired与Resource都可以用来装配bean。都可以写在字段上&#x…

CAS操作实际上包含了哪两个步骤?

目录 先讲原理&#xff1a; 再深入CAS规则&#xff1a; 问题&#xff1a;第一步是否应该是修改预期值&#xff1f; 总结一下&#xff1a; 先讲原理&#xff1a; CAS的全称是Compare And Swap&#xff08;比较并交换&#xff09;&#xff0c;是一种原子操作&#xff0c;通常…

zookeeper 单机环境搭建(三)

下载地址&#xff1a;Index of /dist/zookeeper 1.新建目录/home/yy/tools/zookeeper&#xff0c;将下载好的apache-zookeeper-3.8.0-bin.tar拷进/home/yy/tools目录。 2.解压zk tar –zxvf apache-zookeeper-3.8.0-bin.tar j3. cd到解压后的zk路径下&#xff0c; 将解压后…

二叉树的遍历

文章目录 二叉树的遍历方式先序遍历中序遍历后序遍历层序遍历 根据遍历过程构造二叉树已知前序(后序)中序输出后序(前序) 二叉树的遍历方式 先序遍历 先序遍历指遍历顺序为根节点——》左节点——》右节点 代码实现&#xff1a; //存储遍历结果的数组vector<int> v;//前…

9、MachO简介

一、MachO文件 MachO其实是Mach Object文件格式的缩写,是Mac以及iOS上可执行文件的格式,类似于windows上的PE格式(Portable Executable), linux上的elf格式(Executable and Linking Format) 二、MachO文件结构 Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件、目…

事件处理框架

一、事件处理框架-event_base Reactor模式有几个基础的组件&#xff0c;其中的Reactor框架就是event_base结构体&#xff0c;下面是定义&#xff08;只列出部分常用的成员&#xff09;&#xff0c;如下&#xff1a; struct event_base {/* 后台使用的I/O多路复用机制 */const s…

分享一些提升效率的小工具

1、 IObit Uninstaller IObit Uninstaller是一款简单专业的卸载工具&#xff0c;可以帮我们卸载电脑中顽固难卸的软件和浏览器插件&#xff0c;支持强制一键卸载和文件粉碎功能。 除了卸载软件&#xff0c;它还可以自动帮我们检测软件安装、检测软件更新、查看工具栏和插件。 …