Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 一级国产20岁美女毛片,嫩草影院一二三永久在线观看,国产亚洲精品久久久久91网站

          整合營銷服務商

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

          免費咨詢熱線:

          Spire.PDF for Java 10.4.9

          Spire.PDF for Java 10.4.9 支持獲取 PDF 文檔中的 Javascript 內容

          pire.PDF for Java 10.4.9 現已正式發布。該版本支持獲取 PDF 文檔中的 Javascript 內容,并新增了一個構造方法來解決 PdfInkAnnotation 在瀏覽器里沒有顯示的問題。此外,在提取 PDF 表格和扁平化表單域時遇到的兩個問題也已成功被修復。詳情請查閱以下內容。

          新功能:

          • 新增一個構造方法 PdfInkAnnotation ink=new PdfInkAnnotation(Rectangle2D rect, List<int[]> inkList) 來解決添加的 PdfInkAnnotation 在瀏覽器里沒有顯示的問題。
          • 支持獲取 PDF 文檔中的 Javascript 內容。

          問題修復:

          • 修復了表格中的文本沒有被完整提取的問題。
          • 修復了扁平化表單域后保存 PDF 文檔時程序拋出 java.lang.NullPointerException 異常的問題。

          獲取 Spire.PDF for Java 10.4.9 請點擊:

          https://www.e-iceblue.cn/Downloads/Spire-PDF-JAVA.html

          .什么是jsoup

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

          JSoup 功能

          jsoup 實現 WHATWG HTML5 規范,并將 HTML 解析為與現代瀏覽器相同的 DOM。

          • 從 URL,文件或字符串中提取并解析 HTML。
          • 查找和提取數據,使用 DOM 遍歷或 CSS 選擇器。
          • 操縱 HTML 元素,屬性和文本。
          • 根據安全的白名單清理用戶提交的內容,以防止 XSS 攻擊。
          • 輸出整潔的 HTML。

          JSoup 主要類

          大多數情況下,下面給出 3 個類是我們需要重點了解的。

          Jsoup 類

          Jsoup 類是任何 Jsoup 程序的入口點,并將提供從各種來源加載和解析 HTML 文檔的方法。 Jsoup 類的一些重要方法如下:

          方法

          描述

          static Connection connect(String url)

          創建并返回 URL 的連接。

          static Document parse(File in, String charsetName)

          將指定的字符集文件解析成文檔。

          static Document parse(String html)

          將給定的 html 代碼解析成文檔。

          static String clean(String bodyHtml, Whitelist whitelist)

          從輸入 HTML 返回安全的 HTML,通過解析輸入 HTML 并通過允許的標簽和屬性的白名單進行過濾。

          Jsoup 類的其他重要方法可以參見 - https://jsoup.org/apidocs/org/jsoup/Jsoup.html

          Document 類

          該類表示通過 Jsoup 庫加載 HTML 文檔。可以使用此類執行適用于整個 HTML 文檔的操作。 Element 類的重要方法可以參見 - http://jsoup.org/apidocs/org/jsoup/nodes/Document.html

          Element 類

          HTML 元素是由標簽名稱,屬性和子節點組成。 使用 Element 類,您可以提取數據,遍歷節點和操作 HTML。 Element 類的重要方法可參見 - http://jsoup.org/apidocs/org/jsoup/nodes/Element.html

          2.代碼工程

          實驗目的

          實現解析liuhaihua.cn首頁list

          pom.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <project xmlns="http://maven.apache.org/POM/4.0.0"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
              <parent>
                  <artifactId>springboot-demo</artifactId>
                  <groupId>com.et</groupId>
                  <version>1.0-SNAPSHOT</version>
              </parent>
              <modelVersion>4.0.0</modelVersion>
          
              <artifactId>jsoup</artifactId>
          
              <properties>
                  <maven.compiler.source>8</maven.compiler.source>
                  <maven.compiler.target>8</maven.compiler.target>
              </properties>
              <dependencies>
          
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-web</artifactId>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-autoconfigure</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-test</artifactId>
                      <scope>test</scope>
                  </dependency>
                  <dependency>
                      <groupId>org.jsoup</groupId>
                      <artifactId>jsoup</artifactId>
                      <version>1.12.1</version>
                  </dependency>
                  <dependency>
                      <groupId>org.apache.httpcomponents</groupId>
                      <artifactId>httpclient</artifactId>
                  </dependency>
          
              </dependencies>
          </project>

          controller

          package com.et.jsoup;
          
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.RestController;
          
          import java.util.HashMap;
          import java.util.Map;
          
          @RestController
          public class HelloWorldController {
              @RequestMapping("/hello")
              public Map<String, Object> showHelloWorld(){
                  Map<String, Object> map=new HashMap<>();
                  map=JsoupUtil.parseHtml("http://www.liuhaihua.cn/");
                  map.put("msg", "HelloWorld");
                  return map;
              }
          }

          工具類

          package com.et.jsoup;
          import java.io.IOException;
          import java.util.ArrayList;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;
          
          import org.apache.http.HttpEntity;
          import org.apache.http.HttpStatus;
          import org.apache.http.client.ClientProtocolException;
          import org.apache.http.client.methods.CloseableHttpResponse;
          import org.apache.http.client.methods.HttpGet;
          import org.apache.http.client.utils.HttpClientUtils;
          import org.apache.http.impl.client.CloseableHttpClient;
          import org.apache.http.impl.client.HttpClients;
          import org.apache.http.util.EntityUtils;
          import org.jsoup.Jsoup;
          import org.jsoup.nodes.Document;
          import org.jsoup.nodes.Element;
          import org.jsoup.select.Elements;
          
          /**
           * @author liuhaihua
           * @version 1.0
           * @ClassName JsoupUtil
           * @Description todo
           * @date 2024/06/24/ 9:16
           */
          
          public class JsoupUtil {
                  public static Map<String ,Object> parseHtml(String url){
                      Map<String,Object> map=new HashMap<>();
                      //1.生成httpclient,相當于該打開一個瀏覽器
                      CloseableHttpClient httpClient=HttpClients.createDefault();
                      CloseableHttpResponse response=null;
                      //2.創建get請求,相當于在瀏覽器地址欄輸入 網址
                      HttpGet request=new HttpGet(url);
                      //設置請求頭,將爬蟲偽裝成瀏覽器
                      request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36");
          //        HttpHost proxy=new HttpHost("60.13.42.232", 9999);
          //        RequestConfig config=RequestConfig.custom().setProxy(proxy).build();
          //        request.setConfig(config);
                      try {
                          //3.執行get請求,相當于在輸入地址欄后敲回車鍵
                          response=httpClient.execute(request);
          
                          //4.判斷響應狀態為200,進行處理
                          if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK) {
                              //5.獲取響應內容
                              HttpEntity httpEntity=response.getEntity();
                              String html=EntityUtils.toString(httpEntity, "utf-8");
                              System.out.println(html);
          
                              /**
                               * 下面是Jsoup展現自我的平臺
                               */
                              //6.Jsoup解析html
                              Document document=Jsoup.parse(html);
                              //像js一樣,通過標簽獲取title
                              System.out.println(document.getElementsByTag("title").first());
                              Elements blogmain=document.getElementsByClass("col-sm-8 blog-main");
          
          
                              //像js一樣,通過class 獲取列表下的所有博客
                              Elements postItems=blogmain.first().getElementsByClass("fade-in");
                              //循環處理每篇博客
                              List<Map>  list=new ArrayList<>();
                              for (Element postItem : postItems) {
                                  Map<String,Object> row=new HashMap<>();
                                  //像jquery選擇器一樣,獲取文章標題元素
                                  Elements titleEle=postItem.select(".entry-title a");
                                  System.out.println("文章標題:" + titleEle.text());;
                                  row.put("title",titleEle.text());
                                  System.out.println("文章地址:" + titleEle.attr("href"));
                                  row.put("href",titleEle.attr("href"));
                                  //像jquery選擇器一樣,獲取文章作者元素
                                  Elements footEle=postItem.select(".archive-content");
                                  System.out.println("文章概要:" + footEle.text());;
                                  row.put("summary",footEle.text());
                                  Elements view=postItem.select(".views");
                                  System.out.println( view.text());
                                  row.put("views",view.text());
                                  System.out.println("*********************************");
                                  list.add(row);
                              }
                              map.put("data",list);
          
                          } else {
                              //如果返回狀態不是200,比如404(頁面不存在)等,根據情況做處理,這里略
                              System.out.println("返回狀態不是200");
                              System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
                          }
          
                      } catch (ClientProtocolException e) {
                          e.printStackTrace();
                      } catch (IOException e) {
                          e.printStackTrace();
                      } finally {
                          //6.關閉
                          HttpClientUtils.closeQuietly(response);
                          HttpClientUtils.closeQuietly(httpClient);
                      }
                      return  map;
                  }
                  public static void main(String[] args) {
                      parseHtml("http://www.liuhaihua.cn/");
                  }
          
          }

          DemoApplication.java

          package com.et.jsoup;
          
          import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          
          @SpringBootApplication
          public class DemoApplication {
          
             public static void main(String[] args) {
                SpringApplication.run(DemoApplication.class, args);
             }
          }

          以上只是一些關鍵代碼,所有代碼請參見下面代碼倉庫

          代碼倉庫

          • https://github.com/Harries/springboot-demo

          3.測試

          • 啟動spring boot應用
          • 訪問http://127.0.0.1:8088/hello,返回解析結果

          4.引用

          • 官網:https://jsoup.org/
          • GitHub:https://github.com/jhy/jsoup/
          • http://www.liuhaihua.cn/archives/710776.html

          、javaScript介紹

          JavaScript是一種基于對象和事件驅動的、并具有安全性能的腳本語言

          (客戶端語言)

          JavaScript特點

          向HTML頁面中添加交互行為

          腳本語言,語法和Java類似

          解釋性語言,邊解釋邊執行


          JavaScript組成:ECMAScript 、DOM、BOM

          基本結構:

          <script type="text/javascript">

          <!—

          JavaScript 語句;

          —>

          </script >

          示例:

          ……

          <title>初學JavaScript</title>

          </head>

          <body>

          <script type="text/javascript">

          document.write("初學JavaScript");

          document.write("<h1>Hello,JavaScript</h1>");

          </script>

          </body>

          </html>

          注:<script>…</script>可以包含在文檔中的任何地方,只要保證這些代碼在被使用前已讀取并加載到內存即可

          執行原理:


          外部JS文件:

          <script src="export.js" type="text/javascript"></script>

          直接在HTML標簽中使用:

          <input name="btn" type="button" value="彈出消息框"

          onclick="javascript:alert('歡迎你');"/>


          二、基本常見語法:

          1、核心語法:同時聲明和賦值變量

          var catName="皮皮";

          2、數據類型:

          undefined:var width;

          變量width沒有初始值,將被賦予值undefined;

          null:表示一個空值,與undefined值相等;

          number:var iNum=23; //整數

          var iNum=23.0; //浮點數

          boolean:true 和false;

          string:一組被引號(單引號或雙引號)括起來的文本

          var string1="This is a string";

          3、typeof運算符:

          typeof檢測變量的返回值

          typeof運算符返回值如下函數

          undefined:變量被聲明后,但未被賦值

          string:用單引號或雙引號來聲明的字符串

          boolean:true或false

          number:整數或浮點數

          object:javascript中的對象、數組和nul

          4、String對象:


          5、數組:


          數組的常用屬性和方法

          類別 名稱 描述

          屬性 length 設置或返回數組中元素的數目

          方法 join( ) 把數組的所有元素放入一個字符串,通過一個的分隔符進行分隔

          sort() 對數組排序

          push() 向數組末尾添加一個或更多 元素,并返回新的長度


          6、邏輯控制語句:

          if(條件)

          {

          //JavaScript代碼;

          }


          主站蜘蛛池模板: 日韩毛片基地一区二区三区| 日韩精品一区二区三区在线观看 | 日韩一区二区视频在线观看| 亚洲AV成人精品日韩一区| 一区二区三区波多野结衣| 中文字幕日韩丝袜一区| 久久综合九九亚洲一区| 中文字幕在线观看一区二区三区| 无码人妻aⅴ一区二区三区有奶水 人妻夜夜爽天天爽一区 | 波多野结衣av高清一区二区三区| 无码人妻精品一区二区三| 国产韩国精品一区二区三区| 国产精品伦子一区二区三区 | 99精品国产高清一区二区麻豆 | 好爽毛片一区二区三区四无码三飞| 日本不卡一区二区三区| 国内偷窥一区二区三区视频| 日产一区日产2区| 人妻少妇AV无码一区二区| 国产激情精品一区二区三区| 精品一区二区三区水蜜桃| 好吊妞视频一区二区| 国产熟女一区二区三区五月婷| 中文精品一区二区三区四区| 国产成人精品日本亚洲专一区| 精品无码一区二区三区爱欲九九 | 成人免费区一区二区三区| 八戒久久精品一区二区三区 | 亚洲一区无码精品色| 国产成人高清精品一区二区三区| 日亚毛片免费乱码不卡一区| 国产一区二区三区手机在线观看 | 国产AV午夜精品一区二区入口 | 亚洲爽爽一区二区三区| 亚洲国产精品成人一区| 三上悠亚亚洲一区高清| 久久久精品人妻一区亚美研究所 | 国内精品一区二区三区在线观看| 97人妻无码一区二区精品免费| 国产成人久久一区二区不卡三区| 精品亚洲av无码一区二区柚蜜|