使用单个spider类和ItemLoader爬网嵌套页面

时间:2016-12-03 10:23:53

标签: python scrapy

我尝试抓取网页并提取一组链接,然后抓取这些链接的网页,并通过项目加载器返回数据来获取数据,但遇到了麻烦。这是我在我的蜘蛛类中遇到问题的代码:

def parse(self, response):
   #--initialize selector--
   for s in response.css(SECTION_SELECTOR):
         #--populate object attributes--
         yield scrapy.Request( self.link, callback=self.parse_single )


def parse_single(self, response):
        #--initialize selector--
        for p in response.css(SINGLE_SELECTOR):
             #--populate item_loader (l)--
             yield l.load_item()

这种方法的问题在于,只返回最后一个s项目中的项目,并且当我将它们保存为csv文件时,会反复迭代相同的项目。第二个解析方法中的循环项按希望输出,没有重复。

如果我尝试在第一个解析方法上使用yield切换return,则只执行第一个s项目,并且第二个解析再次按预期将项目打印到文件,但只输出第一个s行,没有重复。

请有人向我解释如何让代码迭代第一个循环中的所有项目,以便在第二个循环中打印。

0 个答案:

没有答案