整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          爬蟲之Jsoup學(xué)習(xí)

          爬蟲之Jsoup學(xué)習(xí)

          、前言

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

          jsoup官網(wǎng):https://jsoup.org/

          二、核心功能

          2.1、功能描述

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

          ② 使用DOM或CSS選擇器來查找、取出數(shù)據(jù)使用DOM或CSS選擇器來查找、取出數(shù)據(jù)

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

          Tips:jsoup是基于MIT協(xié)議發(fā)布的,可放心使用于商業(yè)項目

          2.2、Maven地址

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

          三、核心API

          6個包提供用于開發(fā)jsoup應(yīng)用程序的類和接口。

          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節(jié)點

          四、實例代碼

          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中的標(biāo)題 */
                  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、根據(jù)class名稱獲取表單

          
              public static void main(String[] args) {
                  Document document=Jsoup.connect("https://baidu.com").get();
                  /* 獲取拉勾網(wǎng)登入頁面的body */
                  /* System.out.println(document.body()); */
                  /* 根據(jù)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、提取并打印表單參數(shù)

          
              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、設(shè)置元素的html內(nèi)容

          
              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內(nèi)容 */
                  div.wrap("<div id=\"div2\"></div>");
                  System.out.println(document.body());
              }
           

          4.7、設(shè)置元素的文本內(nèi)容

          好不要在搜索引擎出現(xiàn)過

          title標(biāo)題最好不在搜索引擎出現(xiàn)過,可以嘗試在搜索引擎進行搜索,適當(dāng)?shù)馗淖円幌隆?/p>


          一次敲定后不要改動

          title寫好了最好不要動,尤其是在網(wǎng)站權(quán)重還較低的情況下。很多網(wǎng)站快照不更新就是因為title經(jīng)常改動。title標(biāo)題要仔細(xì)寫,一次性寫好后短時間內(nèi)都不要改動,改動標(biāo)題的風(fēng)險是很大的。


          加上h1標(biāo)題標(biāo)簽

          title標(biāo)題在源碼中,要加上h1標(biāo)題標(biāo)簽,告訴搜索引擎,突顯它的重要性。


          切詞的特殊符號使用

          一般我們在網(wǎng)站標(biāo)題描寫中,經(jīng)常使用的符號有:“,”(逗號)、“ 空格(空格)、“-”(英文下 的橫線)、“—”(中文下的橫線)、“|”(豎)、“_”(下劃線)、“/”(斜杠)這些符號在標(biāo)題中所起的作用及表達(dá)的意義是不一樣的,不僅不同的分隔符在標(biāo)題在所起的作用不一樣,即使是同一分隔符在不同的搜索引擎里表達(dá)的意義也會有所差別。


          控制title字?jǐn)?shù)

          title最多顯示30個中文字符。網(wǎng)頁標(biāo)題中多余的部分搜索引擎都會自動切斷。所以在寫標(biāo)題標(biāo)簽的時候,一般控制在30個中文字符以內(nèi)。標(biāo)題太長,會分散關(guān)鍵詞的權(quán)重。


          關(guān)鍵字搭配

          關(guān)鍵字搭配是指關(guān)鍵字在標(biāo)題中出現(xiàn)的前后位置、主次搭配。 搜索引擎對于頁面信息的抓取,是由HTML代碼中自上而下進行的, 所以在網(wǎng)頁標(biāo)題的最前面加上主關(guān)鍵字,可以很好地體現(xiàn)頁面的主題內(nèi)容。

          TML 標(biāo)題


          在 HTML 文檔中,標(biāo)題很重要。


          HTML 標(biāo)題

          標(biāo)題(Heading)是通過 <h1> - <h6> 標(biāo)簽進行定義的。

          <h1> 定義最大的標(biāo)題。 <h6> 定義最小的標(biāo)題。

          實例

          <h1>這是一個標(biāo)題。</h1>

          <h2>這是一個標(biāo)題。</h2>

          <h3>這是一個標(biāo)題。</h3>

          注釋: 瀏覽器會自動地在標(biāo)題的前后添加空行。


          標(biāo)題很重要

          請確保將 HTML 標(biāo)題 標(biāo)簽只用于標(biāo)題。不要僅僅是為了生成粗體大號的文本而使用標(biāo)題。

          搜索引擎使用標(biāo)題為您的網(wǎng)頁的結(jié)構(gòu)和內(nèi)容編制索引。

          因為用戶可以通過標(biāo)題來快速瀏覽您的網(wǎng)頁,所以用標(biāo)題來呈現(xiàn)文檔結(jié)構(gòu)是很重要的。

          應(yīng)該將 h1 用作主標(biāo)題(最重要的),其后是 h2(次重要的),再其次是 h3,以此類推。


          HTML 水平線

          <hr> 標(biāo)簽在 HTML 頁面中創(chuàng)建水平線。

          hr 元素可用于分隔內(nèi)容。

          實例

          <p>這是一個段落。</p>

          <hr>

          <p>這是一個段落。</p>

          <hr>

          <p>這是一個段落。</p>


          HTML 注釋

          可以將注釋插入 HTML 代碼中,這樣可以提高其可讀性,使代碼更易被人理解。瀏覽器會忽略注釋,也不會顯示它們。

          注釋寫法如下:

          實例

          <!-- 這是一個注釋 -->

          注釋: 開始括號之后(左邊的括號)需要緊跟一個嘆號,結(jié)束括號之前(右邊的括號)不需要,合理地使用注釋可以對未來的代碼編輯工作產(chǎn)生幫助。


          HTML 提示 - 如何查看源代碼

          你是否看過一些網(wǎng)頁然后驚嘆它是如何實現(xiàn)的。

          如果您想找到其中的奧秘,只需要單擊右鍵,然后選擇"查看源文件"(IE)或"查看頁面源代碼"(Firefox),其他瀏覽器的做法也是類似的。這么做會打開一個包含頁面 HTML 代碼的窗口。


          HTML 標(biāo)簽參考手冊

          菜鳥教程的標(biāo)簽參考手冊提供了有關(guān)這些標(biāo)題及其屬性的更多信息。

          您將在本教程下面的章節(jié)中學(xué)到更多有關(guān) HTML 標(biāo)簽和屬性的知識。


          主站蜘蛛池模板: 无码精品久久一区二区三区| 久久综合精品不卡一区二区| 人妻无码一区二区三区四区| 寂寞一区在线观看| 亚洲熟妇av一区二区三区下载| 日本在线视频一区| 亚洲日韩一区精品射精| 亚洲电影一区二区| 人妻无码一区二区三区四区| 亚洲一区精彩视频| 99久久精品国产高清一区二区| 国产成人精品一区二区A片带套| 中文字幕一区二区三| 国产乱码一区二区三区| av无码人妻一区二区三区牛牛| 亚洲AV成人一区二区三区在线看 | 精品日韩一区二区三区视频| 精品乱子伦一区二区三区| 国产精品视频免费一区二区| 亚洲日韩精品无码一区二区三区| 无码少妇一区二区三区芒果| 精品视频在线观看你懂的一区| 亚洲AV成人精品日韩一区| 午夜精品一区二区三区免费视频| 色系一区二区三区四区五区| 精品国产一区二区三区四区| 中文字幕在线精品视频入口一区| 暖暖免费高清日本一区二区三区| 精品人妻系列无码一区二区三区| 亚洲一区二区三区偷拍女厕| 亚洲国产av一区二区三区| 在线免费视频一区| 亚洲av无一区二区三区| 精品视频一区二区三三区四区| 亚洲夜夜欢A∨一区二区三区| 一本岛一区在线观看不卡| 国产一区二区三区日韩精品| 亚洲AV无码国产一区二区三区| 在线播放国产一区二区三区| 麻豆天美国产一区在线播放| 午夜无码一区二区三区在线观看|