【问题标题】:How to get Scrapy Response in Scrapy Shell如何在 Scrapy Shell 中获得 Scrapy 响应
【发布时间】:2017-04-09 01:53:05
【问题描述】:

我是 Scrapy 项目的新手,已经阅读了很多教程。他们似乎都假设您知道如何立即解析响应对象,并且您可以立即调用响应回调(例如scrapy.Request(url=url, callback=self.parse))。但实际上,我需要通过反复试验来处理 CSS 选择器。

如何取回 Scrapy 响应对象,以便可以交互操作它?

scrapy.Request(url=url) 的响应似乎是我无法使用的东西(见屏幕截图)——没有什么可以解析 HTML——例如没有.css 方法。

【问题讨论】:

    标签: python python-2.7 scrapy ipython scrapy-spider


    【解决方案1】:

    在shell中,使用fetch(request)

    • fetch(url[, redirect=True]) - 从给定的 URL 获取新的响应并相应地更新所有相关对象。您可以选择通过传递 redirect=False 来要求不遵循 HTTP 3xx 重定向
    • fetch(request) - 从给定请求中获取新响应并相应地更新所有相关对象。

    【讨论】:

    【解决方案2】:

    scrapy 是异步工作的,请求上的callback 方法用于确定在这种情况下哪个“方法”将接收response 对象。

    所以,如果你真的学习了很多教程,你会得到类似的东西:

    def parse(self, response):
        ...
    
        yield Request(url='myurl', callback=self.some_other_method)
    
    def some_other_method(self, response):
        ...
        # play with the response object of the request done to `myurl`
    

    这样,您可以按顺序获得响应。

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多