scrapy爬取圖片,自定義圖片下載路徑和圖片名稱
阿新 • • 發佈:2021-01-31
Scrapy圖片下載與儲存
scrapy 提供了一個專用圖片管道 ImagesPipeline 來下載屬於某個特定資料專案中的圖片。
- 將所有下載的圖片轉換成通用的格式(JPG)和模式(RGB)
- 避免重新下載最近已經下載過的圖片
- 管道會為當前安排好要下載的圖片保留一個內部佇列,並將包含相同圖片的專案連線到這個佇列中,這樣可以避免多次下載專案共享同一張圖片
為了使用管道,需要在自定義的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 指定一個有效的資料夾用來儲存下載的照片