我需要在我的蜘蛛(item['number'] = ... )中包含一个项目,它只是按升序为我的 CSV 输出文件中的每个抓取的行分配一个数字。
因此,“数字”列会将 1 分配给第一行,将 2 分配给第二行,依此类推。我将如何编码该项目以以每次返回 +1 增量的方式返回它?
*如果您想知道,我需要将数字列用作多维数据集数据库的 Dim 主键。
任何帮助表示赞赏。谢谢!
我需要在我的蜘蛛(item['number'] = ... )中包含一个项目,它只是按升序为我的 CSV 输出文件中的每个抓取的行分配一个数字。
因此,“数字”列会将 1 分配给第一行,将 2 分配给第二行,依此类推。我将如何编码该项目以以每次返回 +1 增量的方式返回它?
*如果您想知道,我需要将数字列用作多维数据集数据库的 Dim 主键。
任何帮助表示赞赏。谢谢!
当您阅读您的 csv 文件时,您可以使用enumerate:
import csv
with open('file.csv', 'w') as csvfile:
reader = csv.reader(csvfile)
for i, row in enumerate(reader, start=1):
print(i)
如果您真的希望数字成为项目生成过程和输出的一部分,那么您可以使用Pipeline。
settings.py
ITEM_PIPELINES = {
"myspider.pipelines.NumberPipeline": 300,
}
pipelines.py
class NumberPipeline(object):
def open_spider(self, spider):
self.number = 1 # The starting number.
def process_item(self, item, spider):
item['number'] = self.number
self.number += 1
return item