最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
社旗县| 天门市| 双桥区| 梅河口市| 金川县| 洪雅县| 古蔺县| 营山县| 洪湖市| 汉寿县| 浏阳市| 漳浦县| 顺义区| 囊谦县| 扎兰屯市| 精河县| 任丘市| 香格里拉县| 蒲城县| 济源市| 沁水县| 邻水| 祁门县| 温宿县| 杂多县| 富民县| 文昌市| 邢台市| 邵阳县| 张家川| 秦安县| 札达县| 寻乌县| 贵州省| 沁水县| 古交市| 高密市| 保山市| 吴桥县| 慈溪市| 东平县|