0

我需要在我的蜘蛛(item['number'] = ... )中包含一个项目,它只是按升序为我的 CSV 输出文件中的每个抓取的行分配一个数字。

因此,“数字”列会将 1 分配给第一行,将 2 分配给第二行,依此类推。我将如何编码该项目以以每次返回 +1 增量的方式返回它?

*如果您想知道,我需要将数字列用作多维数据集数据库的 Dim 主键。

任何帮助表示赞赏。谢谢!

4

2 回答 2

1

当您阅读您的 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)
于 2019-02-13T06:42:15.800 回答
0

如果您真的希望数字成为项目生成过程和输出的一部分,那么您可以使用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
于 2019-02-13T08:35:45.377 回答