天天看點

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

Scrapy圖檔(檔案)下載下傳

這裡介紹的是Scrapy架構自帶的圖檔(檔案)下載下傳功能

一: 初步了解在Scrapy架構的源碼中下載下傳圖檔的檔案

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

--->

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

--->

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

在這個.py檔案中

代碼第69行是: 圖檔根據哪個屬性下載下傳

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

代碼第97行是: 圖檔存放的路徑

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

這裡隻是簡單的了解一些scrapy圖檔下載下傳的一些操作(其它源碼自行百度)

************************重新/自定義***********************

二: 當圖檔爬蟲代碼邏輯寫完整之後

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

檔案内

定義下載下傳圖檔的Imagepipeline(與下載下傳檔案的FilesPipeline邏輯一樣)

"""

邏輯:

1. 引入scrapy自帶的ImagesPipeline

from scrapy.pipelines.images import ImagesPipeline

2. 建立類, 繼承自ImagesPipeline

class Custom(定制的)ImagePipeline(ImagesPipeline):

3. 重寫get_media_requests函數, 在函數中循環擷取圖檔位址, 建立Request, 并且将item作為request.meta中參數, 傳遞到file_path函數中, 傳回存放request對象的清單

def get_media_requests(self, item, info):

        return[Request(x, meta={'item': item}) for x in item['img_src']]

4. 重寫file_path函數, 擷取到request.meta中的item對象, 提取分類名稱, 拼接完整的存放路徑, 并且傳回路徑

def file_path(self, request, response=None, info=None):

            item = request.meta['item']

            xxx = item['xxx'](xxx儲存檔案夾名稱和圖檔名)

            path = xxx+'/'+'xxx'+'.jpg'

            return path

5. 在

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

中的ITEM_PIPELINES配置該類路徑, 設定優先級, 配置IMAGES_URLS_FIELD, IAMGES_STORE

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

# 配置根據item的哪個屬性下載下傳圖檔

IMAGES_URLS_FIELD = 'img_src'

# 配置圖檔存放的目錄

IAMGES_STORE = 'datas'

"""

img_src是下載下傳圖檔的連結

這樣就行運作Scrapy架構圖檔下載下傳

注意: 1.隻有這樣也是不行的, 還要先将items.py檔案配置好

關于這個請看部落格的其它内容

2. 儲存圖檔的屬性必須是個清單, 不然會抛出異常

事例:

Scrapy架構的圖檔(檔案)下載下傳功能一些配置操作

src: 是圖檔的屬性接收的變量名

繼續閱讀