Python 在爬网进程结束后转换结果
我刚和scrapy完成了一个项目。 我的客户希望结果为xlsx,因为我没有找到像这样导出结果的方法,我正在导出到csv,然后转换xlx(如果此代码可以改进,请告诉我:) 我的问题是当python执行Python 在爬网进程结束后转换结果,python,scrapy,web-crawler,Python,Scrapy,Web Crawler,我刚和scrapy完成了一个项目。 我的客户希望结果为xlsx,因为我没有找到像这样导出结果的方法,我正在导出到csv,然后转换xlx(如果此代码可以改进,请告诉我:) 我的问题是当python执行csv\u 2\u xlsx(文件名)结果文件还不存在时。我试着增加睡眠时间,但不起作用 欢迎任何帮助:) 我的主文件如下: # main.py from scrapy.crawler import CrawlerProcess from spiders import my_spider from e
csv\u 2\u xlsx(文件名)
结果文件还不存在时。我试着增加睡眠时间,但不起作用
欢迎任何帮助:)
我的主文件如下:
# main.py
from scrapy.crawler import CrawlerProcess
from spiders import my_spider
from exporter import csv_2_xlsx
FILE_NAME = 'result.csv'
process = CrawlerProcess({
'FEED_FORMAT': 'csv',
'FEED_URI': FILE_NAME,
'FEED_EXPORTERS' : {
'csv': 'exporter.FixLineCsvItemExporter',
}
})
process.crawl(my_spider.MySpider)
# I think python should stop until
# this process ends
process.start()
# this line is not working cause
# result.csv doest not exist yet
csv_2_xlsx(FILE_NAME)
编辑版本 为了解决csv文件未关闭的问题,我按照以下方式重新排列了您的代码 main.py
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
process = CrawlerProcess(get_project_settings())
process.crawl('spider_name')
process.start()
Pipeline.py
from scrapy.exporters import CsvItemExporter
from exporter import csv_2_xlsx
FILE_NAME = 'result.csv'
class TutorialPipeline(object):
def __init__(self):
self.file = open(FILE_NAME, 'wb')
self.exporter = CsvItemExporter(self.file)
self.exporter.start_exporting()
def close_spider(self, spider):
self.exporter.finish_exporting()
self.file.close()
csv_2_xlsx(FILE_NAME)
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
您是否尝试将
csv\u 2\u xlsx(文件名)
添加到pipeline.py
文件中?在pipeline.py
文件的类定义中,添加一个函数并将csv\u 2\u xlsx(文件名)
放入该函数中
def close_spider(self, spider):
csv_2_xlsx(FILE_NAME)
我只是检查了一下,没有工作。看起来导出过程是在spider关闭后进行的。@Freddy不是spider终止时生成的
结果.csv
?您记得在设置.py中激活管道吗?管道正在工作。为了更好的理解,我记录了这个问题@Freddy,我测试并添加了上面代码的新编辑版本。希望它能帮助你。如果它仍然不起作用,请通知我。