我已经用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}}
答案 0 :(得分:3)
您可以改为关闭实际文件:
您可以使用closed()
方法来调用它,该方法会在关闭蜘蛛网时自动调用。
def closed(self, reason):
self.file.close()