从scrapy导出csv文件(不通过命令行)

我成功地尝试从命令行将项目导出到csv文件中,例如:

scrapy crawl spiderName -o filename.csv

我的问题是:在代码中最简单的解决方案是什么?我需要这个,因为我从另一个文件中提取了文件名。最终方案应该是,我称之为

  scrapy crawl spiderName

并将项目写入filename.csv

回答:

为什么不使用项目管道?

WriteToCsv.py

   import csv

from YOUR_PROJECT_NAME_HERE import settings

def write_to_csv(item):

writer = csv.writer(open(settings.csv_file_path, 'a'), lineterminator='\n')

writer.writerow([item[key] for key in item.keys()])

class WriteToCsv(object):

def process_item(self, item, spider):

write_to_csv(item)

return item

settings.py

   ITEM_PIPELINES = { 'project.pipelines_path.WriteToCsv.WriteToCsv' : A_NUMBER_HIGHER_THAN_ALL_OTHER_PIPELINES}

csv_file_path = PATH_TO_CSV

如果您希望将项目分别写入单独的csv以获取单独的蜘蛛,则可以为蜘蛛指定CSV_PATH字段。然后,在管道中使用Spiders字段,而不是setttigs的路径。

以上是 从scrapy导出csv文件(不通过命令行) 的全部内容, 来源链接: utcz.com/qa/431455.html

回到顶部