scrapy--豆瓣top250--中间件

job.py

import scrapy
from Douban.items import DoubanItem


class JobSpider(scrapy.Spider):
    name = "job"
    allowed_domains = ["douban.com"]
    start_urls = ["https://movie.douban.com/top250"]

    def parse(self, response):
        el_list=response.xpath('//*[@class="info"]')
        # print(len(el_list))
        for el in el_list:
            item=DoubanItem()

            item['name']=el.xpath('./div[1]/a/span[1]').extract_first()
            yield item
            # item['info']
        url=response.xpath('//span[@class="next"]/a/@href').extract_first()
        if url:
            url=response.urljoin(url)
            yield scrapy.Request(
                url=url
            )

中间件在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):当爬虫关闭时调用的方法。

你可能感兴趣的:(scrapy,中间件,windows)