Java網路爬蟲實操(9)

sinkinka發表於2018-03-17

上一篇:Java網路爬蟲實操(8)

大家好,上一篇講到了下載器。這篇介紹爬蟲框架NetDiscovery新增的FileDownloader下載器,用於下載二進位制流資源(office文件、rar壓縮包、圖片等)的下載器。

1) 下載圖片檔案

  • 準備好資源的url
  • 設定儲存到本地的資料夾和檔名
  • 設定好下載器
package com.cv4j.netdiscovery.example;

import com.cv4j.netdiscovery.core.Spider;
import com.cv4j.netdiscovery.core.domain.Request;
import com.cv4j.netdiscovery.core.downloader.file.FileDownloadAfterRequest;
import com.cv4j.netdiscovery.core.downloader.file.FileDownloader;

public class DownloadFiles {
    public static void main(String[] args) {
        //1、檔案下載後儲存的目錄(不存在的話,程式會自動建立的)
        String filePath = "D:\\savedir";

        //2、指定資源的路徑和儲存檔名
        //也可以參考FileDownloadAfterRequest類自定義parser類,實現下載功能
        Request request = new Request("http://cdn2.jianshu.io/assets/web/nav-logo-4c7bbafe27adc892f3046e6978459bac.png");
        request.afterRequest(new FileDownloadAfterRequest(filePath, "jianshu.png"));

        //3. 構建一個爬蟲,設定好下載器FileDownloader
        Spider.create()
                .request(request)
                .downloader(new FileDownloader())
                .run();

    }
}

複製程式碼

下載成功

Java網路爬蟲實操(9)

2) 下載rar檔案

package com.cv4j.netdiscovery.example;

import com.cv4j.netdiscovery.core.Spider;
import com.cv4j.netdiscovery.core.domain.Request;
import com.cv4j.netdiscovery.core.downloader.file.FileDownloadAfterRequest;
import com.cv4j.netdiscovery.core.downloader.file.FileDownloader;

public class DownloadFiles {
    public static void main(String[] args) {

        Request request = new Request("http://jsdx.sc.chinaz.com/Files/DownLoad/moban/201803/zppt2624.rar");
        request.afterRequest(new FileDownloadAfterRequest("D:\\savedir", "1.rar"));

        Spider.create()
                .request(request)
                .downloader(new FileDownloader())
                .run();

    }
}

複製程式碼

下載成功

Java網路爬蟲實操(9)

3) 下載多個rar檔案

  • request(Request... requests) 支援傳入多個引數
  • 構建request陣列
  • 傳入request方法
  • 如果下載的檔案比較大,要耐心等待程式執行完。
package com.cv4j.netdiscovery.example;

import com.cv4j.netdiscovery.core.Spider;
import com.cv4j.netdiscovery.core.domain.Request;
import com.cv4j.netdiscovery.core.downloader.file.FileDownloadAfterRequest;
import com.cv4j.netdiscovery.core.downloader.file.FileDownloader;

public class DownloadFiles {
    public static void main(String[] args) {

        //一次下載3個資源
        String[] urls = {"http://jsdx.sc.chinaz.com/Files/DownLoad/moban/201803/zppt2615.rar"
                ,"http://jsdx.sc.chinaz.com/Files/DownLoad/moban/201803/zppt2639.rar"
                ,"http://jsdx.sc.chinaz.com/Files/DownLoad/moban/201803/zppt2624.rar"};

        String filePath = "D:\\savedir";

        //構建Request陣列
        Request[] requests = new Request[urls.length];
        for (int i = 0; i < requests.length; i++) {
            String fileName = (i+1)+".rar";
            requests[i] = new Request(urls[i])
                    .afterRequest(new FileDownloadAfterRequest(filePath, fileName));
        }

        Spider.create()
                .request()
                .downloader(new FileDownloader())
                .run();

    }
}

複製程式碼

下載成功

Java網路爬蟲實操(9)

大家有興趣可以去試試下載word文件等資源。總之,通過框架NetDiscovery下載資源就是這麼方便。當然,FileDownloader和FileDownloadAfterRequest等相關的原始碼也可以瞭解一下,相信對檔案下載會有更深刻的認識。

上一篇:Java網路爬蟲實操(10)

相關文章