通過scrapy內置的ImagePipeline下載圖片到本地、並提取本地保存地址


1.通過scrapy內置的ImagePipeline下載圖片到本地

2.獲取圖片保存本地的地址

1.通過scrapy內置的ImagePipeline下載圖片到本地

1)在settings.py中打開 ITEM_PIPELINES 的注釋,在  ITEM_PIPELINES 中加入

ITEM_PIPELINES = {
   'spider_first.pipelines.SpiderFirstPipeline': 300,
'scrapy.pipelines.images.ImagesPipeline':5,
#后面的數字代表執行優先級 ,當執行pipeine的時候會按照數字由小到大執行
}

2)settings.py中加入

IMAGES_URLS_FIELD ="image_url"  #image_url是在items.py中配置的網絡爬取得圖片地址
#配置保存本地的地址
project_dir=os.path.abspath(os.path.dirname(__file__)) #獲取當前爬蟲項目的絕對路徑
IMAGES_STORE=os.path.join(project_dir,'images') #組裝新的圖片路徑

 還有很多設置有特殊需要的話可以用哦 (詳情可以去imagepipeine源碼查看)

   IMAGES_MIN_HEIGHT=100   #設定下載圖片的最小高度

   IMAGES_MIN_WIDTH=100  #設定下載圖片的最小寬度

    ........

可能報錯:

ModuleNotFoundError: No module named 'PIL'

安裝pillow庫即可
pip install pillow

啟動爬蟲 ,即可images文件夾下看到下載的圖片

 

2.獲取圖片保存本地的地址

1是下載圖片,如果想獲取圖片保存本地的地址,則需要重寫ImagesPipeline,並且在setting中調用重寫的pipeline

#既然要重寫,記得提前引入
from scrapy.pipelines.images import ImagesPipeline

class ArticleImagePipeline(ImagesPipeline):
# 重載ImagePipeline中的item_completed方法,獲取下載地址
def item_completed(self, results, item, info):

  for ok,value in results:   #通過斷點可以看到圖片路徑存在results內

    image_file_path=value['path'] #將路徑保存在item中返回

    item['front_image_path']=image_file_path
  return item

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM