2017-04-09 81 views
1

我是Scrapy项目的新手,并阅读了许多教程。他们似乎都假设您知道如何立即解析响应对象,并且您可以立即调用响应回调(例如scrapy.Request(url=url, callback=self.parse))。但实际上,我需要通过使用试错法的CSS选择器来工作。如何在Scrapy Shell中获得Scrapy响应

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

scrapy.Request(url=url)的响应似乎是我无法使用的东西(请参见屏幕截图) - 无法解析HTML - 例如没有.css方法。 enter image description here

回答

2

,使用fetch(request)

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

谢谢!根据你对我的问题的更新,我也发现这是非常有用的 - https://doc.scrapy.org/en/latest/topics/shell.html – Peter

-1

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` 

这样,你会得到一个顺序方式的响应。

在外壳