• 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):当爬虫关闭时调用的方法。
  • 相关阅读:
    寻找合作伙伴,兼职制作软件
    SpringBoot项目打包与运行
    ansible
    hibernate映射文件中inverse、cascade、order-by属性
    项目采购管理
    使用信号量实现简单双向同步
    如何设计一个低代码平台?
    SpringBoot 03: 常用web组件 - - - 拦截器 + Servlet + 过滤器
    springcloud
    I.MX6U-ALPHA开发板(DDR3实验)
  • 原文地址:https://blog.csdn.net/weixin_74711824/article/details/133248686