一缩麸、實現(xiàn)scrapy 自動下載圖片到本地的功能铸磅,通過項目管道設置。
首先要在setting中搭建pipeline的管道名稱
ITEM_PIPELINES= {
'mm.pipelines.MmPipeline':300,
'scrapy.pipelines.images.ImagesPipeline':1,
}
管道隊伍添加了新成員杭朱!后面的數(shù)字代表處理順序阅仔,數(shù)字越小處理越早。
setting中還要做如下配置:
#用于保存圖片
IMAGES_URLS_FIELD ="front_image_url"#對應上面標號1弧械,這個配置好了八酒,image就是去item找front_這個字段
project_dir=os.path.abspath(os.path.dirname(__file__))
IMAGES_STORE = os.path.join(project_dir,'images')#設置圖片保存的路徑,配置相對路徑刃唐,換電腦也沒事羞迷,在articlespider下面新建一個image的文件夾
解釋下:
1、在setting 文件中ITEM_PIPELINE添加: 'scrapy.pipelines.images.ImagesPipeline':1
1為處理順序画饥,順序越小衔瓮,越先處理;
2抖甘、繼續(xù)在setting中添加圖片URL地址獲取热鞍,
IMAGES_URLS_FIELD = "front_image_url"??? #front_image_url為Item 中存儲圖片URL的字段,應該為list類型;所以我們應將前面存入Item時設置為list
3薇宠、設置圖片下載到本地的路徑
絕對路徑:IMAGES_STORE = ""
相對路徑: 多用相對路徑偷办,工程遷移后絕對路徑不能使用了
創(chuàng)建一個images的文件夾。
跟setting放在同一個目錄之下澄港。
別忘了setting中添加os模塊
二椒涯、運行main.py可見 在項目文件下新生成了images文件,并下載了圖片回梧,自動生成了圖片名字
三废岂、擴展功能: 對圖片進行過濾:
在setting 文件中設置:
IMAGES_MIN_HEIGHT = 100
IMAGES_MIN_WIDTH = 100
過濾掉寬度高度小于100的圖片
四、pipeline中配置image
思路:自定義pipline漂辐,多加個管道,該管道繼承下載圖片的類棕硫,并重寫與Item 交互的方法髓涯,從眾提取到本地路徑,并返回這個Item交給下一個pipline管道哈扮。獲取文件存放的路徑纬纪,設置下載圖片的大小。
原來的scrapy.pipelines.images.ImagesPipeline':1,
這一步已經(jīng)可以解決圖片下載問題了滑肉,但是如果你想要圖片下載的高度的定制化包各,就需要做如下的配置。這就解釋了我已經(jīng)有了圖片下載的通道為什么還要再一遍pipeline
打斷點進行測試靶庙,可以看到问畅,圖片的路徑已經(jīng)填充進來了。
下一步我們就要跟數(shù)據(jù)庫打交道了六荒。mysql發(fā)揮用處