找不到关闭 csv 文件的方法
Can't find any way to close a csv file
我在 python scrapy 中编写了一个脚本,以从网页中获取不同的 ids
及其对应的 names
。当我执行我的脚本时,我可以看到结果正确地通过了,并且我得到了一个填充在 csv 文件中的数据。我使用的是 python 3.6,所以当我使用 scrapy 的内置命令(意味着将数据写入 csv 文件)时,我总是得到一个 csv 文件,每个交替行都有空行。但是,我尝试了以下方法来达到目的并且它完成了它的工作。现在,它生成一个 csv 文件来修复空行问题。
我的问题:作业完成后如何关闭 csv 文件?
这是我目前的尝试:
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])
您可以改为关闭实际文件:
你可以在closed()
方法中调用,蜘蛛关闭时自动调用
def closed(self, reason):
self.file.close()
我在 python scrapy 中编写了一个脚本,以从网页中获取不同的 ids
及其对应的 names
。当我执行我的脚本时,我可以看到结果正确地通过了,并且我得到了一个填充在 csv 文件中的数据。我使用的是 python 3.6,所以当我使用 scrapy 的内置命令(意味着将数据写入 csv 文件)时,我总是得到一个 csv 文件,每个交替行都有空行。但是,我尝试了以下方法来达到目的并且它完成了它的工作。现在,它生成一个 csv 文件来修复空行问题。
我的问题:作业完成后如何关闭 csv 文件?
这是我目前的尝试:
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])
您可以改为关闭实际文件:
你可以在closed()
方法中调用,蜘蛛关闭时自动调用
def closed(self, reason):
self.file.close()