MCPcopy
hub / github.com/scrapy/scrapy / _get_callback

Method _get_callback

scrapy/commands/parse.py:305–338  ·  view source on GitHub ↗
(
        self,
        *,
        spider: Spider,
        opts: argparse.Namespace,
        response: Response | None = None,
    )

Source from the content-addressed store, hash-verified

303 return scraped_data
304
305 def _get_callback(
306 self,
307 *,
308 spider: Spider,
309 opts: argparse.Namespace,
310 response: Response | None = None,
311 ) -> CallbackT:
312 cb: str | CallbackT | None = None
313 if response:
314 cb = response.meta["_callback"]
315 if not cb:
316 if opts.callback:
317 cb = opts.callback
318 elif response and opts.rules and self.first_response == response:
319 cb = self.get_callback_from_rules(spider, response)
320 if not cb:
321 raise ValueError(
322 f"Cannot find a rule that matches {response.url!r} in spider: "
323 f"{spider.name}"
324 )
325 else:
326 cb = "parse"
327
328 if not callable(cb):
329 assert cb is not None
330 cb_method = getattr(spider, cb, None)
331 if callable(cb_method):
332 cb = cb_method
333 else:
334 raise ValueError(
335 f"Cannot find callback {cb!r} in spider: {spider.name}"
336 )
337 assert callable(cb)
338 return cb
339
340 def prepare_request(
341 self, spider: Spider, request: Request, opts: argparse.Namespace

Callers 2

callbackMethod · 0.95
prepare_requestMethod · 0.95

Calls 1

Tested by

no test coverage detected