无法找到关闭CSV文件的任何方法

时间:2018-06-29 18:51:54

标签: python python-3.x csv web-scraping scrapy-spider

我已经用python scrapy编写了一个脚本,以从网页中获得不同的names及其对应的import scrapy, csv class SuborgSpider(scrapy.Spider): name = "suborg" start_urls = ['https://www.un.org/sc/suborg/en/sanctions/1267/aq_sanctions_list/summaries?type=All&page={}'.format(page) for page in range(0,7)] def __init__(self): self.file = open("output.csv", "w", newline="") def parse(self, response): for item in response.xpath('//*[contains(@class,"views-table")]//tbody//tr'): idnum = item.xpath('.//*[contains(@class,"views-field-field-reference-number")]/text()').extract()[-1].strip() name = item.xpath('.//*[contains(@class,"views-field-title")]//span[@dir="ltr"]/text()').extract()[-1].strip() yield{'ID':idnum,'Name':name} writer = csv.writer(self.file) writer.writerow([idnum,name]) 。当我执行脚本时,可以看到结果正确通过,并且正在csv文件中填充数据。我使用的是python 3.6,因此当我使用scrapy的内置命令(意在将数据写入csv文件中)时,我总是会得到一个csv文件,该文件的每一行都有空白行。但是,我尝试了以下方法来达到目的,这确实可以做到。现在,它会生成一个修复空白行问题的csv文件。

我的问题:工作完成后如何关闭csv文件?

这是我到目前为止的尝试:

{{1}}

1 个答案:

答案 0 :(得分:3)

您可以改为关闭实际文件:

您可以使用closed()方法来调用它,该方法会在关闭蜘蛛网时自动调用。

def closed(self, reason):
    self.file.close()