1. 程式人生 > 其它 >scrapy爬取圖片,自定義圖片下載路徑和圖片名稱

scrapy爬取圖片,自定義圖片下載路徑和圖片名稱

技術標籤:Scrapypython

Scrapy圖片下載與儲存

scrapy 提供了一個專用圖片管道 ImagesPipeline 來下載屬於某個特定資料專案中的圖片。

  1. 將所有下載的圖片轉換成通用的格式(JPG)和模式(RGB)
  2. 避免重新下載最近已經下載過的圖片
  3. 管道會為當前安排好要下載的圖片保留一個內部佇列,並將包含相同圖片的專案連線到這個佇列中,這樣可以避免多次下載專案共享同一張圖片

為了使用管道,需要在自定義的Items.py中加入image_urls 和 images 屬性:

import scrapy

class MyItem(scrapy.Item):

    image_urls =
scrapy.Field() images = scrapy.Field()

圖片管道的例子 pipelines.py:

from scrapy.pipelines.images import ImagesPipeline
import scrapy
class DownloadPicturePipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        yield scrapy.Request(item['image_urls '],meta={'images ':item['images '
]}) #通過meta傳遞圖片名 def file_path(self, request, response=None, info=None): #接受圖片名 item = request.meta['images '] #切割url留下尾綴jpg file_name = request.url.split('/')[-1].split('.')[-1] # 圖片下載目錄 image_name = 'full/{}.{}'.format(item,file_name)
return image_name

修改settings.py 配置項:

ITEM_PIPELINES = {
   'quotes.pipelines.DownloadPicturePipeline': 300,
}
IMAGES_STORE ='./images'   #IMAGES_STORE  指定一個有效的資料夾用來儲存下載的照片