首页 > 其他分享 >Day 24 24.1 Scrapy框架之下载中间件

Day 24 24.1 Scrapy框架之下载中间件

时间:2023-04-19 10:22:26浏览次数:51  
标签:24 process 中间件 request 24.1 param spider 537.36

Scrapy框架之下载中间件

class MyDownMiddleware(object):
    def process_request(self, request, spider):
        """
        请求需要被下载时,经过所有下载器中间件的process_request调用
        :param request: 
        :param spider: 
        :return:  
            None,继续后续中间件去下载;
            Response对象,停止process_request的执行,开始执行process_response
            Request对象,停止中间件的执行,将Request重新调度器
            raise IgnoreRequest异常,停止process_request的执行,开始执行process_exception
        """
        pass


    def process_response(self, request, response, spider):
        """
        spider处理完成,返回时调用
        :param response:
        :param result:
        :param spider:
        :return: 
            Response 对象:转交给其他中间件process_response
            Request 对象:停止中间件,request会被重新调度下载
            raise IgnoreRequest 异常:调用Request.errback
        """
        print('response1')
        return response

    def process_exception(self, request, exception, spider):
        """
        当下载处理器(download handler)或 process_request() (下载中间件)抛出异常
        :param response:
        :param exception:
        :param spider:
        :return: 
            None:继续交给后续中间件处理异常;
            Response对象:停止后续process_exception方法
            Request对象:停止中间件,request将会被重新调用下载
        """
        return None

案例

import logging
import time
import random


# http://httpbin.org/get
class TestMiddleware:
    """This middleware allows spiders to override the user_agent"""
    user_agent_list = [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299',
        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    ]

    proxies = [
        "http://61.216.185.88:60808",
    ]

    def process_request(self, request, spider):
        # 设置一个随机的UA
        request.headers['User-Agent'] = random.choice(self.user_agent_list)

        # 每一个请求延迟随机时间
        delay = random.uniform(0, 1)
        time.sleep(delay)
        logging.info(f"延迟{delay}秒发起请求")

        # 设置随机代理IP
        random_ip = random.choice(self.proxies)
        request.meta["proxy"] = random_ip
        logging.info(f"当前代理IP{random_ip}")

标签:24,process,中间件,request,24.1,param,spider,537.36
From: https://www.cnblogs.com/dream-ze/p/17332354.html

相关文章

  • 判断是否超过24小时(一天)的方法2
    //判断是否离线privateBooleanisTOday(Stringtime){Datetoday=newDate();SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");Stringformat=dateFormat.format(today);Stringsubstring=time.substring(0,10);if(format.e......
  • 团体天梯练习 L2-024 部落
    L2-024部落在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数\(N\)(\(≤1......
  • [PLC]三菱Q系列MODBUS通信(QJ71C24N串口模块)
    三菱Q系列MODBUS通信(QJ71C24N串口模块)CPUQ01通信模块:QJ71C24N通信协议:MODBUSRTU编程软件:GXWORK2 打开GXWORK2,新建工程,然后右键点击智能功能模块 安装位置根据硬件实际情况设定,此处注意起始XY地址,后面会用到。     双击开关设置 CH2设置如下,通信协议......
  • centos7修改时区,修改24小时时间制
    1、执行tzselect命令[root@localhostprojectReminder]#tzselectPleaseidentifyalocationsothattimezonerulescanbesetcorrectly.Pleaseselectacontinentorocean.1)Africa2)Americas3)Antarctica4)ArcticOcean5)Asia6)AtlanticOcean......
  • 洛谷P1249最大乘积,数论找规律
    最大乘积题目描述一个正整数一般可以分为几个互不相同的自然数的和,如\(3=1+2\),\(4=1+3\),\(5=1+4=2+3\),\(6=1+5=2+4\)。现在你的任务是将指定的正整数\(n\)分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。输入格式只一个正整数\(n\),(\(3\leqn\leq10000\))。......
  • 图像处理Photoshop 2023(ps2023)v24.2中文mac版
    Photoshop2023(ps2023)图像处理v24.2中文版,我们对它进行了改进。新的设置菜单将提供更好的操作。增强了对图像处理功能的支持。新增了“使用Photoshop在多个平台间移动图像”功能。新的编辑界面更简单了。→→↓↓载Photoshop2023Mac版 1.全新的设置菜单对新版本的设......
  • 中间件测试
    一、中间件分类中间件:系统软件与应用软件之间连接的软件,以便于各软件之间的沟通。主要功能是将应用程序运行环境与操作系统隔离,从而实现开发者无须关注系统问题,而直接关注应用程序在解决问题上的能力。比如:炸鸡店和养鸡场中间的中间商就是中间件,可以为多种应用程序合作互通、资......
  • Autodesk Flame 2024 for mac(高级 3D 视觉效果) v2024激活版
    AutodeskFlame2024中文版提供用于快速、交互式3D视觉效果、精加工、合成、高级图形、颜色分级、整合、编辑和外观开发的工具。3D合成(动作)结合了传统2D合成的交互速度和强大的3D视觉效果。包括会话中艺术家的WYSIWYG预览。Flame2024中文版功能特色基于节点的合成(批处理......
  • NAGA将发行820万美元可转换债券、Tradier宣布完成2460万美元B轮融资!
    过去一周在外汇和差价合约交易领域中,以下是广受大家关注的新闻,比如NAGA将发行820万美元可转换债券、Tradier完成了2460万美元的B轮融资、eToro与Twitter$Cashtags合作进行股票、ETF和加M货币交易。具体新闻如下:1、NAGA将发行820万美元可转换债券据悉,近期零售外汇和差价合约经纪公......
  • KB5024396 - SQL Server 2022 的累积更新 3
    发布日期: 2023年4月13日版本: 16.0.4025.1摘要本文介绍适用于MicrosoftSQLServer2022的累积更新包3(CU3)。此更新包含SQLServer2022累积更新2发布后发布的9个修补程序,并更新以下版本中的组件:SQLServer-产品版本:16.0.4025.1,文件版本:2022.160.4025.......