Python Can';我找不到任何方法来关闭csv文件
我用python scrapy编写了一个脚本,从网页中获取不同的Python Can';我找不到任何方法来关闭csv文件,python,python-3.x,csv,web-scraping,scrapy-spider,Python,Python 3.x,Csv,Web Scraping,Scrapy Spider,我用python scrapy编写了一个脚本,从网页中获取不同的id及其对应的名称。当我执行脚本时,我可以看到结果正确地通过了,并且我得到了一个填充在csv文件中的数据。我使用的是Python3.6,所以当我使用scrapy的内置命令(意味着在csv文件中写入数据)时,我总是得到一个csv文件,每一行都有空行。然而,为了达到这个目的,我试着做了以下几点,它确实做到了。现在,它生成了一个csv文件来修复空行问题 我的问题:作业完成后,如何关闭csv文件 这是我迄今为止的尝试: import scr
id
及其对应的名称。当我执行脚本时,我可以看到结果正确地通过了,并且我得到了一个填充在csv文件中的数据。我使用的是Python3.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()
方法中调用它,该方法在spider关闭时自动调用
def closed(self, reason):
self.file.close()
您可以关闭实际文件:
您可以在closed()
方法中调用它,该方法在spider关闭时自动调用
def closed(self, reason):
self.file.close()
感谢您的解决方案@nosklo。我也知道。然而,问题是我无法理解我应该将建议的行放在我的刮板中的确切位置。这个reason
参数如何与其他方法关联?我指的是用例。谢谢。@MITHU scrapy框架提供了reason
参数,其中包含蜘蛛关闭的原因。在这个特定的spider中不需要它,因此可以忽略它,但它对其他程序很有用。更多详细信息请参阅scrapy docs,感谢您的解决方案@nosklo。我也知道。然而,问题是我无法理解我应该将建议的行放在我的刮板中的确切位置。这个reason
参数如何与其他方法关联?我指的是用例。谢谢。@MITHU scrapy框架提供了reason
参数,其中包含蜘蛛关闭的原因。在这个特定的spider中不需要它,因此可以忽略它,但它对其他程序很有用。更多详细信息请参阅scrapy docs