Я написал скрипт в 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])