scrapy单个spider将多个项目类传递给管道

时间:2012-12-28 12:00:23

标签: scrapy

我是scrapy的新手。在items.py中,我声明了2个名为ItemClass1和ItemClass2的ItemClass。一个蜘蛛方法parseUrl获取html并抓取数据并将其放入各个Item Classes的列表中。

e.g:
C1Items = []
C1Item = ItemClass1()
#scrape data
C1Items.append(C1Item)
...
C2Items = []
C2Item = ItemClass2()
#scrape data
C2Items.append(C2Item)
...

最后:C1Items和C2Items包含所需的数据。

return C1Items #will pass ItemClass1 data to pipeline
return C2Items #will pass ItemClass2 data to pipeline

您能告诉我们将C1Items,C2Items传递给管道的最佳方法是什么。

2 个答案:

答案 0 :(得分:5)

将不同类的所有项组合成一个列表并返回该列表,或使用yield语句:

C1Item = ItemClass1()
#scrape data
yield C1Item
...
C2Item = ItemClass2()
#scrape data
yield C2Item

答案 1 :(得分:2)

只需将数组合并为一个大数组并返回:

return C1Items + C2Items

或者您可以将parseUrl转换为生成器函数:

yield C1Items
yield C2Items