我尝试抓取网页并提取一组链接,然后抓取这些链接的网页,并通过项目加载器返回数据来获取数据,但遇到了麻烦。这是我在我的蜘蛛类中遇到问题的代码:
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
行,没有重复。
请有人向我解释如何让代码迭代第一个循环中的所有项目,以便在第二个循环中打印。