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(),開始接收Itemclose_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等多種方式,對於數據的支持也是非常方便的,這方面的內容將在後續的內容中進行詳細介紹。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- scrapy框架ItemPipeline的使用
- Python爬蟲教程使用Scrapy框架爬取小說代碼示例
- python3 scrapy框架的執行流程
- python實戰項目scrapy管道學習爬取在行高手數據
- 使用python scrapy爬取天氣並導出csv文件