File: start.py

package info (click to toggle)
python-scrapy 2.13.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,664 kB
  • sloc: python: 52,028; xml: 199; makefile: 25; sh: 7
file content (31 lines) | stat: -rw-r--r-- 868 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from __future__ import annotations

from typing import TYPE_CHECKING

from .base import BaseSpiderMiddleware

if TYPE_CHECKING:
    from scrapy.http import Request
    from scrapy.http.response import Response


class StartSpiderMiddleware(BaseSpiderMiddleware):
    """Set :reqmeta:`is_start_request`.

    .. reqmeta:: is_start_request

    is_start_request
    ----------------

    :attr:`~scrapy.Request.meta` key that is set to ``True`` in :ref:`start
    requests <start-requests>`, allowing you to tell start requests apart from
    other requests, e.g. in :ref:`downloader middlewares
    <topics-downloader-middleware>`.
    """

    def get_processed_request(
        self, request: Request, response: Response | None
    ) -> Request | None:
        if response is None:
            request.meta.setdefault("is_start_request", True)
        return request