Scrapy 資料持久化儲存

2021-08-15 10:28:03 字數 1931 閱讀 9520

本文首發於我的部落格:gongyanli.com

前言:本文主要講解scrapy的資料持久化,主要包括儲存到資料庫、json檔案以及內建資料儲存

pipelins.py

`import json

from scrapy.exceptions import dropitem

class mypipeline(object):

def __init__(self):

self.file=open('test.json','wb')

def process_item(self,item,spider):

if item['title']:

line=json.dumps(dict(item))+'\n'

self.file.write(line)

return item

else:

raise dropitem("missing title in %s" % item)`

`class mypipeline(object):

def __init__(self):

self.client = pymongo.mongoclient(host=settings['mongo_host'], port=settings['mongo_port'])

self.db = self.client[settings['mongo_db']]

# self.coll = self.db[settings['mongo_coll2']]

self.chinacwa = self.db['chinacwa']

self.iot = self.db['iot']

self.ny135 = self.db['ny135']

self.productprice = self.db['productprice']

self.allproductprice = self.db['allproductprice']

def process_item(self, item, spider):

if isinstance(item, chinacwaitem):

try:

if item['article_title']:

item = dict(item)

self.chinacwa.insert(item)

print("插入成功")

return item

except exception as e:

spider.logger.exceptionn("")`

settings

1.json

> feed_format:json

> 所用的內建輸出類:jsonitemexporter

2.json lines

> feed_format:jsonlines

> 所用的內建輸出類:jsonlinesitemexporter

3.csv

> feed_format:csv

> 所用的內建輸出類:csvitemexporter

4.xml

> feed_format:xml

> 所用的內建輸出類:xmlitemexporter

5.pickle

> feed_format:pickle

> 所用的內建輸出類:pickleitemexporter

6.marshal

> feed_format:marshal

> 所用的內建輸出類:marshalitemexporter

> 使用方法:

$ scrapy crawl myspider -o test.csv

scrapy框架基於管道的持久化儲存

全棧資料的爬取 如何傳送post請求 yield scrapy.fromrequest url new url,callback self.parse,formdata 五大核心元件 物件 如何適當提公升scrapy爬取資料的效率 增加併發 預設scrapy開啟的併發執行緒為16個,可以適當進行增加...

scrapy 基於管道的持久化儲存操作

scrapy框架中已經為我們專門整合好了高效 便捷的持久化操作功能,我們直接使用即可。這兩個元件配合爬蟲檔案實現資料持久化 items.py 資料結構模板檔案。定義資料屬性。pipelines.py 管道檔案。接收資料 items 進行持久化操作。持久化流程 1.爬蟲檔案爬取到資料後,需要將資料封裝...

Scrapy 框架(二)資料的持久化

scrapy資料的持久化 將資料儲存到資料庫 執行 scrapy genspider t crawl read www.dushu.com 檢視 read.pyclass readspider crawlspider 注 專案更改了預設模板,使其具有遞迴性 在 解析html內容的時候,可以根據鏈結規...