整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          java 如何解析網頁?

          發送HTTP請求:首先,你需要向目標網頁發送HTTP請求以獲取其HTML內容。這可以通過Java的內置庫java.net.HttpURLConnection或者使用更高級的庫如Apache Http Client OkHttp等來完成。

          ·讀取響應內容:一旦你發送了請求并收到了響應,你需要讀取響應的內容,這通常是HTML格式的字符串。

          ·解析HTML:然后,你需要解析HTML字符串以提取所需的信息,這可以通過正則表達式來完成。但通常建議使用專門的HTML解析庫,如Jsoup。Jsoup提供了一種非常方便的方式來解析HTML文檔,并可以通過類似于CSS或jQuery的選擇器語法來提取和操作數據。

          ·如果你需要處理更復雜的網頁或進行更高級的網頁抓取和解析任務,你可能還需要考慮使用如Selenium這樣的瀏覽器自動化工具來模擬真實的瀏覽器行為。但是請注意,頻繁或大規模地抓取網頁可能會違反網站的使用條款甚至可能構成法律問題。

          soup

          抓取網頁后,需要對網頁解析,可以使用字符串處理工具解析頁面,也可以使用正則表達式

          jsoup 的作用:是一款 Java 的HTML 解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于JQuery的操作方法來取出和操作數據

          jsoup的主要功能如下:

          1.從一個URL,文件或字符串中解析HTML;

          2.使用DOM或CSS選擇器來查找、取出數據;

          3.可操作HTML元素、屬性、文本;

          創建練習類

          解析URL

          第一個參數是訪問的url,第二個參數是訪問的超時時間

          使用標簽選擇器,獲取title標簽中的內容

          輸出結果

          讀取文件

          準備一個簡易的HTML文件

          獲取這個

          讀取文件,獲取字符串,代碼及結果

          使用dom方式遍歷文檔

          解析文件獲取document對象

          依據id獲取,這個是id的內容,我們獲取這個內容

          編寫代碼,顯示結果

          依據標簽獲取,我們獲取這個標簽的內容

          代碼及結果

          依據class獲取,獲取內容

          代碼和結果

          依據屬性,屬性內容

          代碼和結果

          接下來從元素中獲取數據

          首先從元素中獲取ID

          從元素中獲取className

          文本

          代碼及結果

          如果內容是兩個class

          那么代碼及結果

          從元素中獲取屬性

          代碼及結果

          獲取元素的所有屬性

          代碼及結果

          從元素中獲取文本內容,這個之前有,代碼和結果

          、前言

          jsoup 是一款Java 的HTML解析器,我們使用它可直接解析URL地址、HTML文本內容。除此之外,它提供了一套非常友好的API,使得我們可以比較便利的通過DOM,CSS等操作類型,獲取對應網頁元素屬性及數據操作。

          jsoup官網:https://jsoup.org/

          二、核心功能

          2.1、功能描述

          ① 從一個URL,文件或字符串中解析HTML

          ② 使用DOM或CSS選擇器來查找、取出數據使用DOM或CSS選擇器來查找、取出數據

          ③ 可操作HTML元素、屬性、文本可操作HTML元素、屬性、文本

          Tips:jsoup是基于MIT協議發布的,可放心使用于商業項目

          2.2、Maven地址

                  <dependency>
                      <groupId>org.jsoup</groupId>
                      <artifactId>jsoup</artifactId>
                      <version>1.11.3</version>
                  </dependency>

          三、核心API

          6個包提供用于開發jsoup應用程序的類和接口。

          org.jsoup

          org.jsoup.examples

          org.jsoup.helper

          org.jsoup.nodes

          org.jsoup.parser
          org.jsoup.safety

          org.jsoup.salect

          主要類:

          Jsoup 類提供了連接,清理和解析HTML文檔的方法

          Document 獲取HTML文檔

          Element 獲取、操作HTML節點

          四、實例代碼

          4.1、三種加載HTML的方法

          
              public static void main(String[] args) {
                  /* 從URL加載HTML */
                  Document document = Jsoup.connect("http://www.baidu.com").get();
                  String title = document.title();
                  /* 獲取html中的標題 */
                  System.out.println("title :"+title);
          
                  /* 從字符串加載HTML */
                  String html = "<html><head><title>First parse</title></head>"
                          + "<body><p>Parsed HTML into a doc.</p></body></html>";
                  Document doc = Jsoup.parse(html);
                  title = doc.title();
                  System.out.println("title :"+title);
          
                  /* 從文件加載HTML */
                  doc = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");
                  title = doc.title();
                  System.out.println("title :"+title);
              }
          

          4.2、獲取html中的head、body、url等信息

          
              public static void main(String[] args) {
                  Document document = Jsoup.connect("http://www.baidu.com").get();
                  String title = document.title();
          
                  System.out.println("title :"+title);
                  /* 獲取html中的head */
                  System.out.println(document.head());
                  /* 獲取html中的body */
          
                  /* 獲取HTML頁面中的所有鏈接 */
                  Elements links = document.select("a[href]");
                  for (Element link : links){
                      System.out.println("link : "+ link.attr("href"));
                      System.out.println("text :"+ link.text());
                  }
              }
           

          4.3、獲取URL的元信息

          
              public static void main(String[] args) {
                  Document document = Jsoup.connect("https://passport.lagou.com").get();
          
                  System.out.println(document.head());
                  /* 獲取URL的元信息 */
                  String description = document.select("meta[name=description]").get(0).attr("content");
                  System.out.println("Meta description : " + description);
          
                  String keywords = document.select("meta[name=keywords]").first().attr("content");
                  System.out.println("Meta keyword : " + keywords);
              }
           

          4.4、根據class名稱獲取表單

          
              public static void main(String[] args) {
                  Document document = Jsoup.connect("https://baidu.com").get();
                  /* 獲取拉勾網登入頁面的body */
                  /* System.out.println(document.body()); */
                  /* 根據class名稱獲取表單 */
                  Elements formElement = document.getElementsByClass("form_body");
                  System.out.println(formElement.html());
                  /* 獲取URL的元信息 */
                  for (Element inputElement : formElement) {
                      String placeholder = inputElement.getElementsByTag("input").attr("placeholder");
                      System.out.println(placeholder);
                  }
              }
           

          4.5、提取并打印表單參數

          
              public static void main(String[] args) {
                  Document document = Jsoup.parse(new File("F:\\jsoup\\html\\login.html"),"utf-8");
                  Element loginform = document.getElementById("registerform");
          
                  Elements inputElements = loginform.getElementsByTag("input");
                  for (Element inputElement : inputElements) {
                      String key = inputElement.attr("name");
                      String value = inputElement.attr("value");
                      System.out.println("Param name: "+key+" -- Param value: "+value);
                  }
              }
           

          4.6、設置元素的html內容

          
              public static void main(String[] args) {
                  Document document = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");
                  System.out.println(document.body());
                  System.out.println("*************");
                  Element div = document.select("div").first();
                  div.html("<p>Hello</p>");
                  div.prepend("<p>Fiest</p>");
                  div.append("<p>Last</p>");
                  System.out.println(document.body());
                  System.out.println(div.text());
          
                  /* 對元素包裹一個外部HTML內容 */
                  div.wrap("<div id=\"div2\"></div>");
                  System.out.println(document.body());
              }
           

          4.7、設置元素的文本內容


          主站蜘蛛池模板: 日本一区二区三区精品国产| 3D动漫精品一区二区三区| 香蕉免费看一区二区三区| 亚洲综合一区二区精品导航| 亚洲AV噜噜一区二区三区| 制服中文字幕一区二区| 日本无码一区二区三区白峰美| 色狠狠一区二区三区香蕉蜜桃| 国产一区二区在线| 亚洲视频一区二区三区| 中文字幕一区二区人妻性色| 四虎精品亚洲一区二区三区| 一本一道波多野结衣AV一区 | 国产成人精品日本亚洲专一区 | 国产精品美女一区二区| 2021国产精品一区二区在线 | 中文字幕视频一区| 中文字幕VA一区二区三区| 精品理论片一区二区三区| 亚洲日本va一区二区三区| 亚洲一区在线视频| 色婷婷一区二区三区四区成人网| 亚洲国产综合精品一区在线播放| 精品久久久久久中文字幕一区| 亚洲日韩一区二区三区| 无码人妻精品一区二区三区蜜桃| 日产亚洲一区二区三区| 麻豆AV一区二区三区久久| 久久久久成人精品一区二区| 无码人妻精品一区二区三区66 | 精品无码人妻一区二区三区| 麻豆精品久久久一区二区| 国产综合一区二区| 国产一区二区三区91| 亚洲午夜福利AV一区二区无码 | 亚洲无删减国产精品一区| 久久久久人妻精品一区蜜桃| 亚洲国产情侣一区二区三区| 亚洲一区二区三区亚瑟| 人妻精品无码一区二区三区| 鲁丝丝国产一区二区|