Scrapy - 等待所有请求完成

时间:2015-07-16 20:16:37

标签: python scrapy

我刚刚开始使用scrapy,我正在尝试抓取几个链接,这些链接产生我的JSON结果。很简单,但我的问题是请求的异步性质。我无法找到实现这一目标的正确结构。

除了解析方法结尾处的def opt(S1, S2, S3, n1, n2, n3): xo = np.array([0,1,.01]) from scipy.optimize import minimize signoise = lambda w1,w2,w3: (w1**2 * n1**2 + w2**2 * n2**2 + w3**2 * n3**2) / (w1**2 * S1**2 + w2**2 * S2**2 + w3**2 * S3**2 + 2*w1*S1*w2*S2 * 2*w1*S1*w2*S2 + 2*w2*S2*w3*S3) w1min, w2min, w3min = scipy.optimize.minimize(signoise, (.4, .2, .4)) return w1min, w2min, w3min 之外,以下代码中的所有内容都能正常运行。在任何/所有请求完成之前,该值为yeilded。有没有办法说"等待所有请求完成"然后屈服。或者“完成刮擦”#34;我能找到最终结果的方法吗?

error : <lambda>() takes exactly 3 arguments (1 given)

1 个答案:

答案 0 :(得分:2)

Scrapy背后的想法是每个请求导出一些项目。你正在做的是你想要所有东西,只返回一个项目 - 这是不可能的。

然而,您可以实现您想要的,但稍微改变您的代码。 导出当前项目并创建item pipeline,例如,将您在parse方法中生成的项目转换为包含类别及其sub_items的一个大项目(字典?)调用close_spider方法时将所有内容导出。

在这种情况下,您可以处理异步项目处理并将结果分组在一起。