1 回答
TA贡献1911条经验 获得超7个赞
最后,我找到了一种获得所需行为的方法。这个想法是进行一种递归,最后一步将返回整个结果。为了迭代递归,我们使用元属性共享列表。
result = list()
def after_auth_success(self, response):
first_prod = prod_list.pop(0)
basic_url = build_url("basic_info_url", first_prod)
yield FormRequest(basic_url, meta = {'prod_list': prod_list}, calback = self.on_basic_info)
def on_basic_info(self, response):
yield FormRequest("get_price_url", meta = {'prod_list':response.meta['prod_list']}, calback = self.on_price_info)
def on_price_info(self, response):
#Scrape result and add the result into a dict called node
result.append(result_node)
prod_list = response.meta['prod_list']
if prod_list:
first_prod = prod_list.pop(0)
basic_url = build_url("basic_info_url", first_prod)
yield FormRequest(basic_url, meta = {'prod_list': prod_list}, calback = self.on_basic_info)
else:
yield {'data': result}
添加回答
举报
