<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java中如何使用Jsoup進(jìn)行HTML頁(yè)面的簡(jiǎn)單爬蟲(chóng)(爬取圖片)

      準(zhǔn)備工作:

                     1. 一個(gè)HTML頁(yè)面,這里以 https://www.qycn.com/xzx/article/3969.html 為例

           2. 新建一個(gè)maven工程,引入jsoup依賴(lài)

      <!-- jsoup HTML parser library @ https://jsoup.org/ -->
        <dependency>
          <groupId>org.jsoup</groupId>
          <artifactId>jsoup</artifactId>
          <version>1.13.1</version>
         </dependency>  

       頁(yè)面圖片如圖所示:

       

       然后F12需要找到包裹圖片的外部DIV的Class屬性名稱(chēng),該名稱(chēng)用來(lái)幫助獲取圖片位置

       準(zhǔn)備工作已就緒,本次功能未下載當(dāng)前HTML頁(yè)面上的所有圖片,完整代碼如下:

      package com.jsoup.com.jsoup;
      import java.io.ByteArrayOutputStream;
      import java.io.File;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.InputStream;
      import java.net.HttpURLConnection;
      import java.net.URL;
      import java.util.ArrayList;
      import java.util.List;
      import org.jsoup.Jsoup;
      import org.jsoup.nodes.Document;
      import org.jsoup.select.Elements;
       
      /**
       * 
      * @ClassName: JsoupUtil 
      * @Description: 圖片爬蟲(chóng) -- 使用jsoup解析html頁(yè)面,獲取需要的路徑,進(jìn)行循環(huán)下載
       */
      public class JsoupUtil {
          
          //定義路徑
          static String baseurl = "https://www.qycn.com";
          static String geturl = "https://www.qycn.com/xzx/article/3969.html";
          static String filepath = "C:\\Users\\Justin\\Desktop\\linshi\\images\\";
       
          public static void main(String[] args) {
              System.out.println("初始下載頁(yè)面:"+geturl);
              String html = getHtml(geturl); // html頁(yè)面內(nèi)容
              List<String> srclists = getImgSrcListFromHtml(html); // 圖片地址集合
              downloadImg(srclists, filepath); // 下載圖片
              // 獲取下一個(gè)頁(yè)面進(jìn)行下載
      /*        List<String> list = getNextPageUrl(html);
              System.out.println(list.size());
              for (int i = 0; i < list.size(); i++) {
                  String url = list.get(i);
                  System.out.println("下一個(gè)下載頁(yè)面:" + url);
                  String html2 = getHtml(url); // html頁(yè)面內(nèi)容
                  List<String> srclists2 = getImgSrcListFromHtml(html2); // 圖片地址集合
                  downloadImg(srclists2, filepath); // 下載圖片
              }*/
              System.out.println("下載完畢");
          }
          
          /**
           * 
          * @Title: getHtml 
          * @Description: 獲取頁(yè)面內(nèi)容
          * @param @param url
          * @param @return  頁(yè)面內(nèi)容
          * @return String  返回類(lèi)型 
          * @throws
           */
          public static String getHtml(String url){
              String html = "";
              try {
                  html = Jsoup.connect(url).execute().body();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              return html;
          }
          
          /**
           * 
          * @Title: getImgSrcListFromHtml 
          * @Description: 獲取頁(yè)面內(nèi)容圖片路徑
          * @param @param html  頁(yè)面內(nèi)容
          * @param @return    圖片路徑數(shù)組
          * @return ArrayList<String>    返回類(lèi)型 
          * @throws
           */
          public static List<String> getImgSrcListFromHtml(String html){
              List<String> list = new ArrayList<>();
              //解析成html頁(yè)面
              Document document = Jsoup.parse(html);
              //獲取目標(biāo)
              Elements elements = document.select("div [class=qyzx_note]").select("img");
              int len = elements.size();
              for (int i = 0; i < len; i++) {
             // list.add(elements.get(i).attr("src")); list.add(baseurl
      + elements.get(i).attr("src")); } return list; } /** * * @Title: getNextPage * @Description: 從頁(yè)面內(nèi)容中獲取下一個(gè)頁(yè)面路徑 * @param 頁(yè)面內(nèi)容 * @return List<String> 返回頁(yè)面url數(shù)組 * @throws */ public static List<String> getNextPageUrl(String html){ List<String> list = new ArrayList<>(); //解析成html頁(yè)面 Document document = Jsoup.parse(html); //獲取目標(biāo) Elements elements = document.select("div [class=list]").select("a"); for (int i = 0;i<elements.size();i++) { String url = baseurl + elements.get(i).attr("href"); list.add(url); } return list; } /** * * @Title: downloadImg * @Description: 下載圖片 -- 通過(guò)獲取的流轉(zhuǎn)成byte[]數(shù)組,再通過(guò)FileOutputStream寫(xiě)出 * @param @param list 圖片路徑數(shù)組 * @param @param filepath 保存文件夾位置 * @return void 返回類(lèi)型 * @throws */ public static void downloadImg(List<String> list, String filepath){ URL newUrl = null; HttpURLConnection hconnection = null; InputStream inputStream = null; FileOutputStream fileOutputStream = null; byte[] bs = null; try { int len = list.size(); for (int i = 0; i < len; i++) { String finalFilePath = ""; newUrl = new URL(list.get(i)); hconnection = (HttpURLConnection) newUrl.openConnection(); //打開(kāi)連接 hconnection.setRequestMethod("GET"); hconnection.setRequestProperty("Content-Type", "application/json"); hconnection.setRequestProperty("connection", "keep-alive"); hconnection.setRequestProperty("User-Agent", "Mozilla/4.76"); inputStream = hconnection.getInputStream(); //獲取流 bs = getBytesFromInputStream(inputStream); //流轉(zhuǎn)btye[] finalFilePath = filepath + list.get(i).substring(list.get(i).lastIndexOf("/")+1); //獲取圖片名稱(chēng) System.out.println("生成圖片路徑:"+finalFilePath); fileOutputStream = new FileOutputStream(new File(finalFilePath)); fileOutputStream.write(bs); //寫(xiě)出 } } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * * @Title: getBytesFromInputStream * @Description: InputStream流轉(zhuǎn)換byte[] * @param @param inputStream * @param @return byte[] * @return byte[] 返回類(lèi)型 * @throws */ public static byte[] getBytesFromInputStream(InputStream inputStream){ byte[] bs = null; try { byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); // while((len = inputStream.read(buffer)) != -1){ arrayOutputStream.write(buffer, 0 ,len); } bs = arrayOutputStream.toByteArray(); } catch (IOException e) { e.printStackTrace(); } return bs; } }

      結(jié)果展示如圖:

       

       

      參考來(lái)自:https://blog.csdn.net/qq_37902949/article/details/81257065

      posted @ 2022-06-14 17:16  孤舟蓑笠翁·  閱讀(1276)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 天堂中文最新版在线官网在线 | 人妻丝袜无码专区视频网站| 扶沟县| av亚洲在线一区二区| 九九热在线视频免费观看| 亚洲国产午夜精品福利| 免费国产好深啊好涨好硬视频| 久久99精品久久99日本| 色欲色香天天天综合网站免费| 欧美日韩精品一区二区视频| 亚洲欧美成人综合久久久| 亚洲欧美综合人成在线| 肃北| 成人免费在线播放av| 苍井空毛片精品久久久| 亚洲日韩乱码中文无码蜜桃臀| 丝袜老师办公室里做好紧好爽| 国产永久免费高清在线| 中文字幕久久熟女蜜桃| 17岁日本免费bd完整版观看| 亚洲 都市 无码 校园 激情| 日本高清无卡码一区二区久久| av一本久道久久综合久久鬼色| 欧美高清狂热视频60一70| 熟妇激情一区二区三区| 国产成年码av片在线观看| 国产乱妇乱子视频在播放| 九九热在线视频精品免费| 国产精品理论片| 久久亚洲精品中文字幕波多野结衣| 国产伦码精品一区二区| 国产精品av中文字幕| 内射干少妇亚洲69XXX| 亚洲欧美色一区二区三区| 噜噜综合亚洲av中文无码| 91亚洲国产成人久久精| 国产女人在线视频| 亚洲人成人网站色www| 色二av手机版在线| 自拍亚洲综合在线精品| 女性高爱潮视频|