(
self,
spidercls: type[Spider],
settings: dict[str, Any] | Settings | None = None,
init_reactor: bool = False,
)
| 56 | |
| 57 | class Crawler: |
| 58 | def __init__( |
| 59 | self, |
| 60 | spidercls: type[Spider], |
| 61 | settings: dict[str, Any] | Settings | None = None, |
| 62 | init_reactor: bool = False, |
| 63 | ): |
| 64 | if isinstance(spidercls, Spider): |
| 65 | raise ValueError("The spidercls argument must be a class, not an object") |
| 66 | |
| 67 | if isinstance(settings, dict) or settings is None: |
| 68 | settings = Settings(settings) |
| 69 | |
| 70 | self.spidercls: type[Spider] = spidercls |
| 71 | self.settings: Settings = settings.copy() |
| 72 | self.spidercls.update_settings(self.settings) |
| 73 | self._update_root_log_handler() |
| 74 | |
| 75 | self.addons: AddonManager = AddonManager(self) |
| 76 | self.signals: SignalManager = SignalManager(self) |
| 77 | |
| 78 | self._init_reactor: bool = init_reactor |
| 79 | self.crawling: bool = False |
| 80 | self._started: bool = False |
| 81 | |
| 82 | self.extensions: ExtensionManager | None = None |
| 83 | self.stats: StatsCollector | None = None |
| 84 | self.logformatter: LogFormatter | None = None |
| 85 | self.request_fingerprinter: RequestFingerprinterProtocol | None = None |
| 86 | self.spider: Spider | None = None |
| 87 | self.engine: ExecutionEngine | None = None |
| 88 | |
| 89 | def _update_root_log_handler(self) -> None: |
| 90 | if get_scrapy_root_handler() is not None: |
no test coverage detected