整合營銷服務商

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

          免費咨詢熱線:

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


          主站蜘蛛池模板: 精品一区二区无码AV| 国产成人高清视频一区二区| 日本精品高清一区二区| 国产小仙女视频一区二区三区| 日本亚洲成高清一区二区三区| 一区二区三区日本视频| 亚洲AV网一区二区三区| 国产大秀视频在线一区二区| 精品久久一区二区| 日韩人妻无码一区二区三区| 区三区激情福利综合中文字幕在线一区 | 久久亚洲中文字幕精品一区四| 毛片无码一区二区三区a片视频| 日韩精品区一区二区三VR| 久久精品国产一区二区三区日韩| 精品国产毛片一区二区无码| 日本一区二区在线免费观看| 国产免费私拍一区二区三区| 国内精品一区二区三区最新 | 国产精品一区二区AV麻豆| 天堂一区二区三区精品| 亚洲AV网一区二区三区| 日本免费一区二区三区最新vr| 国产凸凹视频一区二区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国产另类ts人妖一区二区三区 | 亚洲欧洲专线一区| 无码丰满熟妇一区二区| 无码aⅴ精品一区二区三区| 福利国产微拍广场一区视频在线| 国产精品一区二区四区| 亚洲日本一区二区一本一道| 国产一区在线视频| 一区二区三区四区精品视频| 亚洲日本久久一区二区va | 日韩一区二区在线观看视频| 亚洲视频一区在线| 欧洲精品免费一区二区三区| 高清一区高清二区视频| 成人国内精品久久久久一区| 无码AV天堂一区二区三区|