根据先前请求的结果提出 scrapy 请求?

make scrapy request depending on outcome of prior request?

我正在为每个用户抓取数据,我不知道是否会有整个时间段的数据。因此,我想首先在很长一段时间内调用 API,然后如果有结果,则在该大块内以较小的时间增量调用 API。我最初尝试只抓取大块的数据,但 API 似乎有一些记录的最大记录要显示,有时只显示部分记录,导致 json 格式问题和数据不完整。编写基于先前 Request 对象的响应对象长度生成新 Request 对象的蜘蛛的聪明方法是什么?我没有尝试任何东西,因为我能想到的就是在蜘蛛的解析方法中创建请求,但这似乎是错误的。感谢 suggestions/pointers 我在文档中遗漏的任何内容。

parse方法(或任何其他回调方法,parse只是默认方法)中创建请求是完全正常的。

Scrapy 的设计使得任何回调都可以 return 数据项或请求的列表,并且 Scrapy 将处理输出以不同的方式处理每件事(将项目发送到管道进行存储或其他,或安排新的请求——配置的回调可能不同)。

这在即将发布的下一个 Scrapy 版本的概述页面中有更好的解释,您可以在这里先睹为快:http://scrapy.readthedocs.org/en/master/intro/overview.html

请注意,示例代码使用的功能尚未发布(生成指令,response.urljoin 方法),但解释有效。