1. 程式人生 > >利用scrapy下載圖片儲存到本地

利用scrapy下載圖片儲存到本地

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(圖片連結)這個方法

import
scrapy

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