• 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):当爬虫关闭时调用的方法。
  • 相关阅读:
    2022/8/10 考试总结
    SCADA系统架构、类型和应用
    双十一屡获冠军!TCL空调的爆品密码是什么?
    27.集合框架-Map接口及其子类和Collections类(3)[20220728]
    《循环双向链表》(带哨兵位的头节点)
    【爬虫基础】万字长文详解XPath
    实现一个 瀑布流 封装until 工具
    RNN框架
    ChatGPT提示词工程师&AI大神吴恩达2023年视频课程学习实践
    Python之wxPython的使用
  • 原文地址:https://blog.csdn.net/weixin_74711824/article/details/133248686