爬蟲2 2 scrapy框架 檔案寫入

2022-08-02 19:00:14 字數 2338 閱讀 4416

目錄

~pipelines.py

前提回顧,spider.py中 data= yield data

import json

class qsbkpipeline(object):

def __init__(self):

self.fp = open('qsbk.json', 'w', encoding='utf-8') # 初始化檔案指標

def open_spider(self, spider):

print("spider start") # 方便觀察

def process_item(self, item, spider):

data = json.dumps(item, ensure_ascii=false)#將字典轉換一下,同時關閉預設的ascii碼很坑

self.fp.write(data+'\n') # 每次寫入後加入換行

def close_spider(self, spider):

self.fp.close()

print("spider end")

當整個專案開始時,會執行_init_ 和open_spider函式,所以先將檔案開啟,方便寫入。專案結束時執行close_spider函式,在這個地方關閉檔案。

每次spider將資料丟擲,由process_spider函式進行處理

在items.py的類中建立兩個例項,作為資料的傳輸物件

~items.py

import scrapy

class qsbkitem(scrapy.item):

author = scrapy.filed()

joke = scrapy.filed() # 沒有為什麼,就是用這個類

~qsbk_spider.py

from qsbk.items import qsbkitem

def parse(self, response):

。。。。

item = qsbkitem(author=author,joke=joke) # 這裡author和content是提前處理好的資料,前面的部分省略了。

yield item

~pipelines.py

import json

class qsbkpipeline(object):

....

def process_item(self, itme, spider):

item_json = json.dumps(dict(item), ensure_ascii=false) # 將接收到的item物件轉換成字典,再用dumps函式轉為json,再呼叫檔案指標寫入。

self.fp.write(item_json+'\n')

另外對於pipelines.py的檔案寫入  scrapy由已經定義好的函式

from scrapy.exporters import jsonlinesitemexporter

# jsonitemexporter類在結束時使用self.fp.close,然後將所有json載入到乙個列表中,在結束時才統一寫入,容易浪費記憶體,並且需要在open_spider中使用exporting.start函式

# 所以選擇這個jsonlinesitemexporter 每次寫入乙個json,不方便之後的讀取。所以資料量小的時候可以選擇使用jsonitemexporter。資料也比較安全,當然也有定義好的csv檔案寫入方法。

~pipelines.py

from scrapy.exporters import jsonlinesitemexporter

def __init__(self):

self.export = jsonlinesitemexporter(self.fp, ensure_ascii=false, encoding='utf-8')

self.fp.write(b'[')

def process_item(self, item, spider):

self.export.export_item(item) # item是在items.py中定義好的類

self.fp.write(b',')

# 這裡每次寫入一點json資料後直接放個逗號進入

# 並在開頭和結尾加入了 [ ] 這樣的話當爬蟲結束時,乙個完整的json檔案就寫好了。

return item # 返回item 不然之後的pipeline都沒辦法用了

def close_spider(self, spider):

self.fp.write(b']')

self.fp.close()

scrapy爬蟲框架

作者經過幾周的python爬蟲實踐之後,深入學習了一下scrapy這個爬蟲框架,現將一些基本知識和 總結整理一下,以備後查。2.scrapy的命令列使用 這部分網上很多部落格都有總結,不需要背,理解會用主要的命令 startproject crawl fetch list genspider.即可,...

scrapy 爬蟲框架

1.安裝 公升級pip版本 pip install upgrade pip 通過pip安裝scrapy框架 pip install scrapy 安裝成功 只執行scrapy 進行測試是否安裝成功 2.scrapy startproject 爬蟲專案名稱 執行此命令,可以生成乙個爬蟲專案 會預先生成...

Scrapy爬蟲框架

scrapy中的各大元件及其功能 1.scrapy引擎 engine 引擎負責控制資料流在系統的所有元件中流動,並在相應動作發生時觸發事件。2.排程器 scheduler 排程器從引擎接收request並將它們入隊,以便之後引擎請求request時提供給引擎。4.spider。spider是scra...