Scrapy之爬取结果导出为Excel的实现过程

 更新时间:2022年12月19日 15:00:18   作者:bladestone  
这篇文章主要介绍了Scrapy之爬取结果导出为Excel的实现过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

引言

基于Scrapy来爬取数据只是手段,这些爬取的结果需要按照一定的方式导出或者存储到数据库中,

excel是在日常工作中使用最为广泛的工具之一,本文介绍如何来讲爬取结果存储excel文件。

环境介绍

Python 3.6.1 Scrapy 1.5.0

定义Domain对象

定义爬取数据对象的实体类:

import scrapy
class EnrolldataItem(scrapy.Item):
    schoolName = scrapy.Field()
    currentBatch = scrapy.Field()
    totalNumberInPlan = scrapy.Field()
    majorName = scrapy.Field()
    categoryName = scrapy.Field()
    numberInPlan = scrapy.Field()
    note = scrapy.Field()    

这里的Field表示其在Scrapy爬取的实体字段,无关乎类型。

定义Pipelines

from scrapy.exporters import CsvItemExporter

class EnrolldataPipeline(object):
    def open_spider(self, spider):
        self.file = open("/home/bladestone/enrolldata.csv", "wb")
        self.exporter = CsvItemExporter(self.file,       
        fields_to_export=["schoolName", "currentBatch", "totalNumberInPlan"])
        self.exporter.start_exporting()

    def process_item(self, item, spider):
        self.exporter.export_item(item)
        return item

    def close_spider(self, spider):
        self.exporter.finish_exporting()
        self.file.close()

这里使用了scrapy自带的CsvItemExporter存储爬取的结果。

open_spider()和close_spider()两个方法都来在spider启动和结束的时候,执行一些初始化和清理工作,对于pipeline操作而言:

  • open_spider(): 执行文件创建,然后初始化exporter,并启动start_exporting(),开始接收Item
  • close_spider(): 结束exporter的exporting,关闭文件流。
  • export_item():用来将item保存到输出结果中。

process_item()为pipeline中定义的方法,在pipeline在settings.py中注册之后,将会被调用。

注册pipeline

在settings.py文件中注册pipeline:

ITEM_PIPELINES = {
‘enrolldata.pipelines.EnrolldataPipeline': 300,
}

spider中返回item

在spider中一般通过yield的方式实现异步返回结果,此为spider中定义的响应处理方法。

具体的示例如下:

def parse_data():
    item = EnrolldataItem()
    item['majorName'] = major_name
    item['categoryName'] = major_category
    item['numberInPlan'] = major_number
    item['note'] = major_note
    item['schoolName'] = school_name
    item['currentBatch'] = current_batch
    item['totalNumberInPlan'] = total_number

    yield item

执行crawler

scrapy crawl enrolldata

enrolldata为项目的名称。

总结

在Scrapy中提供了多种结果输出方式,目前支持的有: xml, json, csv, pickle等多种方式,对于数据的支持也是非常方便的,这方面的内容将在后续的内容中进行详细介绍。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python实现Excel自动分组合并单元格

    Python实现Excel自动分组合并单元格

    这篇文章主要为大家详细介绍了Python实现Excel自动分组合并单元格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • 安装ElasticSearch搜索工具并配置Python驱动的方法

    安装ElasticSearch搜索工具并配置Python驱动的方法

    这篇文章主要介绍了安装ElasticSearch搜索工具并配置Python驱动的方法,文中还介绍了其与Kibana数据显示客户端的配合使用,需要的朋友可以参考下
    2015-12-12
  • python用tkinter实现一个简易能进行随机点名的界面

    python用tkinter实现一个简易能进行随机点名的界面

    这篇文章主要介绍了python用tkinter实现一个简易能进行随机点名的界面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Python实现自动化批量调整Word样式

    Python实现自动化批量调整Word样式

    在日常工作中,处理大量的Word文档是一个常见的任务,尤其是需要批量修改文档的样式时,本文为大家介绍了如何使用Python实现自动化批量调整Word样式,需要的可以参考下
    2024-12-12
  • python 实现将Numpy数组保存为图像

    python 实现将Numpy数组保存为图像

    今天小编就为大家分享一篇python 实现将Numpy数组保存为图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python编码最佳实践之总结

    python编码最佳实践之总结

    python编码最佳实践之总结,帮助大家整理了python编码最佳实践的相关知识点,重点从性能角度出发对python的一些惯用法做一个简单总结,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • python 列表输出重复值以及对应的角标方法

    python 列表输出重复值以及对应的角标方法

    今天小编就为大家分享一篇python 列表输出重复值以及对应的角标方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python更新所有安装的包的实现方式

    Python更新所有安装的包的实现方式

    这篇文章主要介绍了Python更新所有安装的包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • python脚本实现统计日志文件中的ip访问次数代码分享

    python脚本实现统计日志文件中的ip访问次数代码分享

    这篇文章主要介绍了python脚本实现统计日志文件中的ip访问次数代码分享,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下
    2014-08-08
  • python使用scrapy解析js示例

    python使用scrapy解析js示例

    这篇文章主要介绍了python使用scrapy解析js的示例,大家参考使用吧
    2014-01-01

最新评论