• scrapy--豆瓣top250--中间件


    job.py

    1. import scrapy
    2. from Douban.items import DoubanItem
    3. class JobSpider(scrapy.Spider):
    4. name = "job"
    5. allowed_domains = ["douban.com"]
    6. start_urls = ["https://movie.douban.com/top250"]
    7. def parse(self, response):
    8. el_list=response.xpath('//*[@class="info"]')
    9. # print(len(el_list))
    10. for el in el_list:
    11. item=DoubanItem()
    12. item['name']=el.xpath('./div[1]/a/span[1]').extract_first()
    13. yield item
    14. # item['info']
    15. url=response.xpath('//span[@class="next"]/a/@href').extract_first()
    16. if url:
    17. url=response.urljoin(url)
    18. yield scrapy.Request(
    19. url=url
    20. )

    中间件在Scrapy中的作用主要有以下几个方面:

    1. 请求预处理:中间件可以对每个请求进行预处理,例如添加自定义的请求头、cookies、代理等信息,以及对请求进行过滤或修改。
    2. 响应处理:中间件可以对每个响应进行处理,例如处理页面重定向、处理错误、修改响应数据等。
    3. 爬虫过滤:中间件可以过滤掉指定的请求或响应,例如对特定URL进行过滤,或者根据条件过滤掉不符合要求的请求或响应。
    4. 错误处理:中间件可以捕获并处理请求或响应的错误,例如超时、连接错误等。
    5. 扩展功能:中间件可以用于添加其他扩展功能,例如自动登录、数据统计、缓存等。

    在Scrapy中,你可以自定义中间件并将其添加到项目的中间件列表中。Scrapy会按照顺序依次调用每个中间件的相应方法,你可以在方法中实现你的自定义逻辑。常用的中间件方法包括:

    • process_request(request, spider):处理请求前的预处理逻辑。
    • process_response(request, response, spider):处理响应前的预处理逻辑。
    • process_exception(request, exception, spider):处理请求或响应过程中的异常。
    • spider_opened(spider):当爬虫开启时调用的方法。
    • spider_closed(spider):当爬虫关闭时调用的方法。
  • 相关阅读:
    【Prism系列】Prism事件聚合器
    Java多线程悲观锁和乐观锁
    Django笔记六 常用字段类型,字段选项
    Origin绘制热重TG和微分热重DTG曲线
    文生视频Sora模型发布,是否引爆AI芯片热潮
    简单电子琴设计verilog蜂鸣器8音阶,视频/代码
    C++模板使用(学习总结)
    第六届“中国法研杯”司法人工智能挑战赛
    并发编程(概念简述)
    Java面试之数据库篇(offer 拿来吧你)
  • 原文地址:https://blog.csdn.net/weixin_74711824/article/details/133248686