基於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):
defopen_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()
defprocess_item
(self, item, spider):
self.exporter.export_item(item)
return item
defclose_spider
(self, spider):
self.exporter.finish_exporting()
self.file.close()
這裡使用了scrapy自帶的csvitemexporter儲存爬取的結果。
open_spider()和close_spider()兩個方法都來在spider啟動和結束的時候,執行一些初始化和清理工作,對於pipeline操作而言:
process_item()為pipeline中定義的方法,在pipeline在settings.py中註冊之後,將會被呼叫。
在settings.py檔案中註冊pipeline:
item_pipelines =在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 enrolldataenrolldata為專案的名稱。
在scrapy中提供了多種結果輸出方式,目前支援的有: xml, json, csv, pickle等多種方式,對於資料的支援也是非常方便的,這方面的內容將在後續的內容中進行詳細介紹。
Scrapy爬蟲框架 二 匯出爬取結果
功能描述 爬取 豆瓣 電影 top 250,爬取內容 電影標題,評分人數,評分 編輯 items.py 檔案 coding utf 8 import scrapy class doubanmovieitem scrapy.item 排名 ranking scrapy.field 電影名稱 title...
Scrapy爬取彩票開獎結果的實現
需求 爬取體育彩票高頻遊戲 北京11選5的開獎結果 實現計畫 使用scrapy從網頁上爬取 實現步驟 1 準備乙個開發測試環境,筆者使用的是 1 2 3 1 ubuntu16.04 2 python2.7.12 3 scrapy1.2.0 2 建立乙個scrapy工程 scrapy startpro...
python爬蟲之scrapy爬取豆瓣電影(練習)
開發環境 windows pycharm mongodb scrapy 任務目標 任務目標 爬取 豆瓣電影top250 將資料儲存到mongodb中。items.py檔案 coding utf 8 define here the models for your scraped items see d...