Python 官方文档:入门教程 => 点击学习
目录引言环境介绍定义Domain对象定义Pipelines注册pipelinespider中返回item执行crawler总结引言 基于scrapy来爬取数据只是手段,这些爬取的结果
基于scrapy来爬取数据只是手段,这些爬取的结果需要按照一定的方式导出或者存储到数据库中,
excel是在日常工作中使用最为广泛的工具之一,本文介绍如何来讲爬取结果存储excel文件。
python 3.6.1 Scrapy 1.5.0
定义爬取数据对象的实体类:
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爬取的实体字段,无关乎类型。
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(),开始接收Itemclose_spider()
: 结束exporter的exporting,关闭文件流。export_item()
:用来将item保存到输出结果中。process_item()为pipeline中定义的方法,在pipeline在settings.py中注册之后,将会被调用。
在settings.py文件中注册pipeline:
ITEM_PIPELINES = {
‘enrolldata.pipelines.EnrolldataPipeline': 300,
}
在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
scrapy crawl enrolldata
enrolldata为项目的名称。
在Scrapy中提供了多种结果输出方式,目前支持的有: xml, JSON, csv, pickle等多种方式,对于数据的支持也是非常方便的,这方面的内容将在后续的内容中进行详细介绍。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: Scrapy之爬取结果导出为Excel的实现过程
本文链接: https://www.lsjlt.com/news/175263.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0