整合營銷服務商

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

          免費咨詢熱線:

          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、設置元素的文本內容


          主站蜘蛛池模板: 精品日产一区二区三区手机| 精品国产一区二区22| 高清一区二区三区| 中文字幕久久亚洲一区| 亚洲AV成人一区二区三区观看| 亚洲爽爽一区二区三区| 国产成人午夜精品一区二区三区| 丰满少妇内射一区| 亚洲国产成人久久一区久久| 精品在线视频一区| 卡通动漫中文字幕第一区| 国产日产久久高清欧美一区| 国产韩国精品一区二区三区久久| 亚洲午夜福利AV一区二区无码 | 亚洲AV无码一区二区三区电影 | 一区二区三区免费在线观看| 狠狠综合久久av一区二区| 国产精品伦子一区二区三区| 久久精品成人一区二区三区| 亚洲日韩一区精品射精| 精品人妻码一区二区三区| 亚洲综合一区二区| 亚洲国产AV无码一区二区三区| 亚洲国产精品一区二区三区在线观看 | 精品一区二区久久| 亚洲av日韩综合一区在线观看| 丰满爆乳一区二区三区| 亚洲AV本道一区二区三区四区| 无码国产精成人午夜视频一区二区| 久久久91精品国产一区二区三区| 久久精品道一区二区三区| 精品无码一区二区三区亚洲桃色| 久久一区二区精品综合| 亚洲字幕AV一区二区三区四区| 精品无码人妻一区二区三区18| 日韩一区二区三区不卡视频| aⅴ一区二区三区无卡无码| 丝袜人妻一区二区三区| 一区二区三区四区精品视频 | 中文字幕一精品亚洲无线一区| 精品一区二区在线观看|