最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Scrapy框架中的Pipeline使用詳解

 更新時間:2023年10月23日 08:57:31   作者:喵叔喲  
這篇文章主要介紹了Scrapy框架中的Pipeline使用詳解,Scrapy 中的 Pipeline 為我們提供了處理數(shù)據(jù)的功能,在實際開發(fā)中我們經(jīng)常使用它來清洗/驗證數(shù)據(jù)、去重和數(shù)據(jù)保存,需要的朋友可以參考下

前言

Scrapy 中的 Pipeline 為我們提供了處理數(shù)據(jù)的功能,在實際開發(fā)中我們經(jīng)常使用它來清洗/驗證數(shù)據(jù)、去重和數(shù)據(jù)保存。在一個項目中會存在多種 Pipeline ,每個 Pipeline 都是一個 class ,其中包含了一些處理的 Item 的方法。 Item 會在這些 Pipeline 中按順序依次傳遞,如果其中一個 Pipeline 丟棄了 Item ,那么后面未執(zhí)行到的 Pipeline 將不會收到這個 Item 。

自定義 Pipeline

自定義 Pipeline 其實很簡單,只需要實現(xiàn)指定的方法即可。

process_item (self,item,spider)

解釋:

該方法必須實現(xiàn),處理數(shù)據(jù)的工作都在這個方法中進(jìn)行,方法返回 dict 、Item 、 Twisted Deferred 或者是 DropItem 異常。

參數(shù):

  • item : 被爬取的 Item ;
  • spider : 爬取 Item 時所使用的 Spider 。

Tip : 如果在 process_item 方法中丟棄了 Item ,那么這個 Item 將不會向后續(xù) Pipeline 傳遞這個 Item 。

open_spider(self,spider)

解釋:

爬蟲開始運行時,將會在這個方法中執(zhí)行一些初始化工作,例如打開數(shù)據(jù)庫、打開文件等。

參數(shù):

  • spider : 當(dāng)前正在使用的
Spider close_spider(self,spider)

解釋:

爬蟲關(guān)閉時,將會在這個方法中執(zhí)行一些后續(xù)工作,例如關(guān)閉數(shù)據(jù)庫、關(guān)閉文件等。

參數(shù):

  • spider : 當(dāng)前正在使用的 Spider
from_crawl(self,crawler)

解釋:

方法為類方法,通過初始化 crawler 對象返回 Pipeline 實例。我們可以通過 crawler 返回所有 Scrapy 核心組件。

特殊的 Pipeline

在一些項目中我們不僅要爬取網(wǎng)頁的數(shù)據(jù),還需要爬取文件或圖片,并保存在本地。這時我們就需要用到 Scrapy 中特殊的 Pipeline :FilesPipeline 和 ImagesPipeline ,它們具有一些相同的方法和結(jié)構(gòu)與,我們稱這種 Pipeline 為 MediaPipeline 。FilesPipeline 和 ImagesPipeline 都包含如下特性:

  • 避免重復(fù)下載數(shù)據(jù)
  • 指定存儲位置

ImagesPipeline 又包含如下特性:

  • 圖片轉(zhuǎn)換為 JPG 格式或者 RGB 格式
  • 生成縮略圖
  • 限制圖片下載的最大/最小寬高

Tip:Scrapy Pipeline 避免重復(fù)下載的方法是將要下載的文件的 URL 放入一個隊列中,并且和 Response 關(guān)聯(lián),從而避免了重復(fù)下載。

FilesPipeline

FilesPipeline 下載文件的工作流程非常簡單,一共有四個步驟:

  1. 爬蟲把獲取到的 Item 和希望下載的文件的 URL 保存到 file_urls 中;
  2. 爬蟲返回的 Item 進(jìn)入到 Pipeline 內(nèi)部;
  3. Item 按照順序傳遞到 FilesPipeline 時,file_urls 中的 URL 會被內(nèi)置的調(diào)度器和下載器下載。在這個時候 Item 是被鎖定的,直到需要下載的文件下載完成或者報錯,Item 才解除鎖定;
  4. 下載完成后,結(jié)果將被保存在 files 中,files 是一個列表,每條數(shù)據(jù)是 dict 類型。

ImagesPipeline

ImagesPipeline 是繼承自 FilesPipeline ,也就是說它的大部分步驟和 FilesPipeline 一樣。 唯一不同的是 ImagesPipeline 將需要下載的圖片 URL 保存到了 image_urls 中,下載完成的結(jié)果保存到 images 中。

Tip:Pipeline 中不僅僅包含了這兩個特殊的 Pipeline ,因為 FilesPipeline 和 ImagesPipeline 是比較常用的,因此我在這里進(jìn)行了講解。更多的內(nèi)置 Pipeline 大家可以去 Scrapy 官網(wǎng)查看具體的文檔。

我們在編寫完 Pipeline 后需要在 settings.py 文件中進(jìn)行注冊,將我們編寫的 Pipeline 注入到 Scrapy 中。

ITEM_PIPELINS= {
  '自定義Pipeline 路徑':'優(yōu)先級'
}

總結(jié)

本篇文章主要講解了 Pipeline 的理論知識,雖然很短,但是這些知識是 Pipeline 的核心知識。下一節(jié)我將通過代碼的形式來展現(xiàn) Pipeline 的使用。

到此這篇關(guān)于Scrapy框架中的Pipeline使用詳解的文章就介紹到這了,更多相關(guān)Pipeline使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中print和return的作用及區(qū)別解析

    Python中print和return的作用及區(qū)別解析

    print的作用是輸出數(shù)據(jù)到控制端,就是打印在你能看到的界面上。這篇文章給大家介紹Python中print和return的作用及區(qū)別解析,感興趣的朋友跟隨小編一起看看吧
    2019-05-05
  • 一文帶你深入了解python中的類型注解

    一文帶你深入了解python中的類型注解

    類型注解(Type?Hints)?是一種在?Python?代碼中為變量、函數(shù)參數(shù)和返回值添加類型信息的方式,下面小編就和大家詳細(xì)介紹一下python中類型注解的相關(guān)語法吧
    2026-02-02
  • python+mediapipe+opencv實現(xiàn)手部關(guān)鍵點檢測功能(手勢識別)

    python+mediapipe+opencv實現(xiàn)手部關(guān)鍵點檢測功能(手勢識別)

    這篇文章主要介紹了python+mediapipe+opencv實現(xiàn)手部關(guān)鍵點檢測功能(手勢識別),本文僅僅簡單介紹了mediapipe的使用,而mediapipe提供了大量關(guān)于圖像識別等的方法,需要的朋友可以參考下
    2022-01-01
  • pycharm找不到解釋器問題的解決方案

    pycharm找不到解釋器問題的解決方案

    安裝好PyCharm之后,新建或者導(dǎo)入項目碰到找不到解釋器的情況,不用擔(dān)心,追根到底,咱們就是需要找到pycharm*.exe的文件,那么這個文件在哪里呢?所以本文就給大家介紹一下pycharm找不到解釋器問題的解決方案,需要的朋友可以參考下
    2024-04-04
  • Python?selenium安裝+Microsoft?Edge驅(qū)動器下載配置流程(最新推薦)

    Python?selenium安裝+Microsoft?Edge驅(qū)動器下載配置流程(最新推薦)

    本文介紹了如何在Python自動化Web瀏覽器背景下配置MicrosoftEdge瀏覽器驅(qū)動,主要內(nèi)容包括查看瀏覽器版本、下載對應(yīng)驅(qū)動、配置環(huán)境以及安裝和驗證Selenium庫,感興趣的朋友一起看看吧
    2025-02-02
  • python列表操作使用示例分享

    python列表操作使用示例分享

    這篇文章主要介紹了python列表操作使用示例,需要的朋友可以參考下
    2014-02-02
  • Python數(shù)據(jù)可視化之Matplotlib初級使用指南

    Python數(shù)據(jù)可視化之Matplotlib初級使用指南

    Matplotlib是Python中最常用的數(shù)據(jù)可視化庫之一,它提供了豐富的圖表類型和靈活的自定義選項,能幫助我們以更直觀的方式理解數(shù)據(jù),本文將對Matplotlib的基本功能進(jìn)行介紹,包括如何創(chuàng)建和自定義圖表等
    2023-07-07
  • Python過濾列表用法實例分析

    Python過濾列表用法實例分析

    這篇文章主要介紹了Python過濾列表用法,結(jié)合實例形式分析了過濾列表的具體定義,功能與使用技巧,需要的朋友可以參考下
    2016-04-04
  • Python實現(xiàn)Windows和Linux之間互相傳輸文件(文件夾)的方法

    Python實現(xiàn)Windows和Linux之間互相傳輸文件(文件夾)的方法

    下面小編就為大家?guī)硪黄狿ython實現(xiàn)Windows和Linux之間互相傳輸文件(文件夾)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Python項目中安裝OpenAI庫簡單易懂的解決方案

    Python項目中安裝OpenAI庫簡單易懂的解決方案

    openAI庫是OpenAI官方提供的Python SDK,旨在幫助開發(fā)者輕松調(diào)用OpenAI的API,實現(xiàn)自然語言處理(NLP)、圖像生成、代碼補(bǔ)全等AI功能,這篇文章主要介紹了Python項目中安裝OpenAI庫簡單易懂的解決方案,需要的朋友可以參考下
    2026-03-03

最新評論

汝南县| 克拉玛依市| 宿松县| 察隅县| 东至县| 敦煌市| 绥滨县| 彭泽县| 梧州市| 舞钢市| 崇义县| 聂拉木县| 天峨县| 高要市| 聊城市| 阿拉尔市| 新龙县| 东阳市| 邵阳县| 桓台县| 兴化市| 南投市| 翁源县| 景谷| 随州市| 凌海市| 花垣县| 方山县| 天津市| 舞阳县| 荃湾区| 邯郸市| 霍城县| 阳曲县| 合水县| 辽阳市| 清远市| 昭平县| 丹寨县| 祥云县| 沂水县|