文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-12-19 18:00

关注

引言

基于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操作而言:

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等多种方式,对于数据的支持也是非常方便的,这方面的内容将在后续的内容中进行详细介绍。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯