Javaの一括ダウンロードBingの壁紙

ビングは、少し問題ダウン一つずつ壁紙、次のように、小さな爬虫類バッチダウンロードを書きます:

輸入org.jsoup.Jsoup;
輸入org.jsoup.nodes.Document。
輸入 java.io. * ;
輸入 java.net。* ;
輸入はjava.util.ArrayList;
輸入はjava.util.List;
輸入java.util.regex.Matcher;
輸入java.util.regex.Patternの。

/ ** 
 *必应壁纸下载
 * javacのUTF-8 -cpを-encoding; C:\ユーザーは\ダウンロード\ jsoup-1.12.1.jar WallpaperDownload.java投与、\ 
 。*のJavaの-cpを、C:\ユーザーは\を投与\ダウンロード\ jsoup-1.12.1.jar WallpaperDownload E:\\壁紙
 * / 
パブリック クラスWallpaperDownload { 

    プライベート 静的 最終文字列BY_PREFIX = "https://bing.ioliu.cn" 

    パブリック 静的 ボイドメイン(文字列[]引数){
         // 运行时指定一个本地下载路径 
        文字列パス= "" ;
        以下のためにint型 ; iは<args.length I ++は、I = 0 {)
            パス = 引数[I]を、
        
        } 
        場合(パス== NULL || path.length()== 0 ){ 
            パス = "E:\\壁紙" 
        } 
        filePathにファイル = 新しいファイル(パス)。
        もし(!filePath.exists()){
            System.out.println( "ディレクトリの作成:" +filePath.getName())。
            filePath.mkdirs(); 
        } 
        のSystem.out.println( "下载位置:" + filePath.getName())。
        (パス)をダウンロード。

    } 

    パブリック 静的 ボイドダウンロード(文字列のパス){
         長い開始= にSystem.currentTimeMillis(); 
        文字列pageHtml = "https://bing.ioliu.cn/ranking" 以下のためにint型、iはi = 1 <= 105; iは++ ){
             場合(I> 1 ){ 
                pageHtml = pageHtml + + "P =" I。

            } 
            試みる {
                文字列[]リンクを = のgetAddress(pageHtml)。
                (リンクパス)を実行します。
            } キャッチ(IOExceptionを電子){ 
                e.printStackTrace(); 
            } 
            pageHtml = "https://bing.ioliu.cn/ranking" 

        } 
        長い端= にSystem.currentTimeMillis();
        長い時間=(終了-開始)/ 1000 ; 
        System.out.println( "下载耗时:" + 時間)。
    } 

    / ** 
     *下载图片
     * 
     * @paramのリンク
     * @paramパスのダウンロード場所
     * @throws のIOException
      * / 
    パブリック 静的 ボイドは(文字列[]リンク、文字列のパス)を実行スローのIOException {
         場合(!path.endsWith( "\\" )){ 
            パス "\\" =パス+ 
        } 
        のためにint型 i = 0; iはlinks.length <; iは++ ){ 
            HttpURLConnectionのURLConnectionの = のgetConnection(リンク[I])。
            入力ストリームイン = urlConnection.getInputStream()。
            ストリングimagenameの=リンク[I] .substring(リンク[I] .lastIndexOf( "/")+ 1).split( "\\?")[0]; 
            ファイルファイル = 新しいファイル(パス+ imagenameの+ ".JPG" )。
            OutputStreamのOutputStream = nullをもし(!file.exists()){ 
                OutputStreamを = 新しいのFileOutputStream(ファイル);
                int型readCount;
                バイト []バイト= 新しい バイト [10240 ];
                一方、(!(readCount = ins.read(バイト))= -1 ){ 
                    outputStream.write(バイト 0 、readCount)。
                }
                System.out.println( "[" + imagenameの+ "]、完成ダウンロード..." ); 
            } { 
                するSystem.out.println(file.getName() + "存在し..." )。
            } 
        } 

    } 

    / ** 
     *获取下载链接地址
     * 
     * @return 
     * @throws のIOException
      * / 
    パブリック 静的文字列[]のgetAddress(文字列HTMLページの)はスローのIOException { 
        するSystem.out.println( "を取得[" + HTMLページの+「]インフォメーション...」);
        HttpURLConnectionの接続 =のgetConnection(HTMLページの)。
        入力ストリームは、 = )(connection.getInputStream。
        ストリング改行 =はSystem.getProperty( "line.separator" )。
        BufferedReaderのリーダー = 新しい BufferedReaderの(新しい InputStreamReaderのは(ある"UTF-8" )); 
        StringBuilderの結果 = 新しいStringBuilderの(); 
        文字列のライン。
        文字列のHTML; 
        一方、(!(ライン= reader.readLine())= NULL ){ 
            result.append(ライン + 改行)。
        }
        HTML =  result.toString()。
        文書DOC = Jsoup.parseBodyFragment(HTML)。
        HTML = 。doc.body()HTML(); 
        文字列[]リンク = extractLinks(HTML)。
        リターンリンク。
    } 

    / ** 
     *提取图片链接
     * 
     * @param HTML
      * / 
    静的文字列[] extractLinks(文字列HTML){ 
        リストの<string>リスト= 新規のArrayList <> (); 

        文字列のパターン =「/photo/.*_.*\\?force=download」
        パターンR = Pattern.compile(パターン)。
        マッチャーメートル= (HTML)r.matcher。
        一方、(m.find()){ 
            list.add(m.group())。
        } 
        文字列[]結果 = 新しい文字列[はlist.size()]。
        以下のためにint型 i = 0; i)は、(はlist.sizeを<; iは++ ){ 
            結果[I] = BY_PREFIX + list.get(I)。
        } 
        を返す結果を、

    } 

    / ** 
     *获取连接
     * 
     * @param urlStr 
     * @return 
     * / 
    パブリック 静的HttpURLConnectionののgetConnection(文字列urlStr){ 
        HttpURLConnectionのURLConnectionの = NULL ;
        試す{ 
            URIのuri = 新しいURI(urlStr)。
            URLのURL = uri.toURL(); 
            URLConnectionの = (HttpURLConnectionの)url.openConnection(); 
        } キャッチ(URISyntaxException電子){ 
            e.printStackTrace(); 
        } キャッチ(例外:MalformedURLException電子){ 
            e.printStackTrace(); 
        } キャッチ(IOExceptionを電子){ 
            e.printStackTrace();
        } 

        戻りのURLConnectionを、
    } 
}

附属書:HTML形式に依存するJAR(jsoup

おすすめ

転載: www.cnblogs.com/rookiek/p/11359865.html