我是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传递给管道的最佳方法是什么。
答案 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