3

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

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

4

2 回答 2

5

要么将不同类的所有项目组合到一个列表中并返回该列表,要么使用yield语句:

C1Item = ItemClass1()
#scrape data
yield C1Item
...
C2Item = ItemClass2()
#scrape data
yield C2Item
于 2012-12-29T03:02:59.777 回答
2

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

return C1Items + C2Items

或者,您可以使用以下方法parseUrl转换为生成器函数:

yield C1Items
yield C2Items
于 2012-12-28T22:02:52.250 回答