scrapy中scrapy.spiders.Spider类的源码中,很多函数都有形参response,到底这个response哪来的?

新手上路,请多包涵

如题

  def _parse(self, response, **kwargs):
        return self._parse_response(
            response=response,
            callback=self.parse_start_url,
            cb_kwargs=kwargs,
            follow=True,
        )

这个_parse函数的response哪来的?
感觉scrapy封装后好难理解,我根本搞不清代码的整体运行逻辑是什么。。。。

阅读 1.6k
1 个回答

先看图:
scrapy架构图

Scrapy的流程是:

  • 一个Spider启动之后,先是产生一个Request
  • 然后Downloader去访问Request中的url,把网站返回的网页内容封装在Response中
  • Spider拿到这个Response,使用用户编写的parser函数对其分析。
  • parser函数分析网页内容后,可以yield Response继续访问其它网页,可以yield Item把Item交给Pipeline去处理。

所以,这个Response是Downloader访问网站获取结果后,再传给Spider的。

参考文献:
https://scrapy-chs.readthedoc...