无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

20. Scrapy 框架 - Pipeline

2020-07-02 10:10 作者:自學(xué)Python的小姐姐呀  | 我要投稿

1. Item Pipeline 介紹

當(dāng)Item 在Spider中被收集之后,就會(huì)被傳遞到Item Pipeline中進(jìn)行處理

每個(gè)item pipeline組件是實(shí)現(xiàn)了簡(jiǎn)單的方法的python類(lèi),負(fù)責(zé)接收到item并通過(guò)它執(zhí)行一些行為,同時(shí)也決定此Item是否繼續(xù)通過(guò)pipeline,或者被丟棄而不再進(jìn)行處理

item pipeline的主要作用:

  1. 清理html數(shù)據(jù)

  2. 驗(yàn)證爬取的數(shù)據(jù)

  3. 去重并丟棄

  4. 講爬取的結(jié)果保存到數(shù)據(jù)庫(kù)中或文件中

2. 編寫(xiě)自己的item pipeline

2.1 必須實(shí)現(xiàn)的函數(shù)

  • process_item(self,item,spider)

每個(gè)item piple組件是一個(gè)獨(dú)立的pyhton類(lèi),必須實(shí)現(xiàn)以process_item(self,item,spider)方法

每個(gè)item pipeline組件都需要調(diào)用該方法,這個(gè)方法必須返回一個(gè)具有數(shù)據(jù)的dict,或者item對(duì)象,或者拋出DropItem異常,被丟棄的item將不會(huì)被之后的pipeline組件所處理

2.2 可以選擇實(shí)現(xiàn)

  • open_spider(self,spider) 表示當(dāng)spider被開(kāi)啟的時(shí)候調(diào)用這個(gè)方法

  • close_spider(self,spider) 當(dāng)spider關(guān)閉時(shí)候這個(gè)方法被調(diào)用

2.3 應(yīng)用到項(xiàng)目

import json

class MoviePipeline(object):
? ?def process_item(self, item, spider):
? ? ? ?json.dump(dict(item), open('diban.json', 'a', encoding='utf-8'), ensure_ascii=False)
? ? ? ?return item
? ? ? ?

注意:

寫(xiě)到pipeline后,要在settings中設(shè)置才可生效

ITEM_PIPELINES = {
? ?'spiderdemo1.pipelines.MoviePipeline': 300
}

2.4 將項(xiàng)目寫(xiě)入MongoDB

MongoDB地址和數(shù)據(jù)庫(kù)名稱(chēng)在Scrapy設(shè)置中指定; MongoDB集合以item類(lèi)命名

from pymongo import MongoClient
from middle.settings import HOST
from middle.settings import PORT
from middle.settings import DB_NAME
from middle.settings import SHEET_NAME


class MiddlePipeline(object):
? ?def __init__(self):
? ? ? ?client = MongoClient(host=HOST, port=PORT)
? ? ? ?my_db = client[DB_NAME]
? ? ? ?self.sheet = my_db[SHEET_NAME]

? ?def process_item(self, item, spider):
? ? ? ?self.sheet.insert(dict(item))
? ? ? ?return item


20. Scrapy 框架 - Pipeline的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
乌苏市| 神农架林区| 星座| 繁昌县| 磐石市| 武夷山市| 宜兴市| 衡水市| 兴海县| 梅州市| 濉溪县| 沧源| 绵竹市| 栾川县| 将乐县| 闻喜县| 广东省| 松原市| 同仁县| 馆陶县| 云安县| 满洲里市| 盐亭县| 察隅县| 钟祥市| 贺州市| 丰镇市| 赤水市| 新巴尔虎左旗| 宁夏| 苗栗市| 延津县| 尉氏县| 湘潭县| 兰坪| 绥滨县| 祁阳县| 平和县| 通河县| 济宁市| 腾冲县|