【发布时间】:2018-06-29 18:51:53
【问题描述】:
我在 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])
【问题讨论】:
标签: python python-3.x csv web-scraping scrapy-spider