利用scrapy下載圖片儲存到本地
阿新 • • 發佈:2018-12-01
1.先宣告一下,起始位置已經是將所有的圖片連結都能到pipelines.py中
2.建立一個類,繼承於ImagesPipeline,因此也就需要匯入ImagesPipeline
from scrapy.pipelines.images import ImagesPipeline
3.由於繼承自ImagesPipeline類,且該類下有一個get_media_requests方法需要被重寫
def get_media_requests(self, item, info):
4.由於是通過連結來獲取圖片,就少不了scrapy.Request(圖片連結)這個方法
importscrapy
5.向圖片連結發請求後得到的響應會儲存到settings.py中的IMAGES_STORE路徑中,因此要去配置一下settings.py,
IMAGES_STORE = "/home/zengsf/spider/Douyu/Douyu/Images"
6.別忘了你建立的pipelines.py中的類需要在settings.py中的ITEM_PIPELINES中新增
ITEM_PIPELINES = { # 'Douyu.pipelines.DouyuPipeline': 300, 'Douyu.pipelines.DouyuImagePipline': 200, }
所有程式碼:
from scrapy.pipelines.images import ImagesPipeline import scrapy class DouyuPipeline(object): def process_item(self, item, spider): # 可以寫儲存資料庫邏輯 return item class DouyuImagePipline(ImagesPipeline): # 此方法不能變 def get_media_requests(self, item, info):# 1 獲取圖片連結 imageLink = item["imgLink"] # 2 向圖片連結發請求,響應會儲存在settings.py中的IMAGES_STORE路徑中 yield scrapy.Request(imageLink) return item