scrapy中下載文件和圖片

下載文件是一種很常見的需求,例如當你在使用爬蟲爬取網站中的圖片、視頻、word、pdf、壓縮包等的時候

 

scrapy中提供了FilesPipeline和ImagesPipeline,專門用來下載文件和圖片:

  我們其實可以把這兩個item pipeline看成是特殊的下載器,用戶使用的時候只需要通過item的一個特殊的字段就可以將要下載的文件或者圖片的url傳遞給它們,它們會自動將文件或者圖片下載到本地,並將下載的結果信息存入到item的另一個特殊的字段,方便用戶在導出文件的時候查閱

  FilesPipeline

    使用FilesPipeline下載頁面中所有的PDF文件,

    1. 在配置文件settings中啓用FilesPipeline,通常將其至於其它的item pipeline的前面
    2. 在配置文件中settings中,使用FILES_STORE指定文件的下載目錄
    3. 在spider解析一個包含文件下載鏈接的頁面的時候,將所有的需要下載文件的url地址都收集到一個列表中,賦值給item的file_urls字段(item['file_urls'])。FilesPipeline在處理每一項item的時候會去讀item['file_urls'],對其中的每一個url進行下載

    當FilesPipeline下載完item['file_urls']所有的文件後,會講各個文件的下載結果收集到另一個列表,賦值給item的files字段item['files']。下載的結果包括以下內容:

    1. Path:文件下載到本地的路徑(相對於FILES_STORE的相對路徑)。
    2. Checksum:文件的校驗
    3. url:文件的url地址

  ImagesPipeline

    圖片也是文件,所以下載圖片本質上其實也是下載文件,ImagesPipeline是FilesPipeline的子類,使用上和FilesPipeline大同小異,只是在所使用的item字段和配置選項上略有差別,

      ImagesPipeline在FilesPipeline的基礎上針對圖片增加了一些特有的功能:

      1. 爲圖片生成縮略圖
        1. 開啓這個功能,只需要在settings中設置IMAGES_THUMBS,它是一個字典,每一項的值都是縮略圖的尺寸
          IMAGES_THUMBS = {
             'small': (50, 50),
             'big': (270, 270),
          }
        2. 當你下載圖片的時候,本地會出現三張圖片(一張原圖,兩張縮略圖)
      2. 過濾掉尺寸過小的圖片
            1. 開啓這個功能後,如果下載一張指定寬高的圖片,該圖片就會被拋棄掉,因爲他的寬高不符合標準
            2. 需要在settings中配置IMAGES_MIN_WIDTH和IMAGES_MIN_HEIGHT,它們分別是指定圖片的最小寬和高
              IMAGES_MIN_WIDTH = 110 
              IMAGES_MIN_HEIGHT = 110    

                       

          

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章