<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        使用Jsoup解析和操作HTML_html/css_WEB-ITnose

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 16:09:21
        文檔

        使用Jsoup解析和操作HTML_html/css_WEB-ITnose

        使用Jsoup解析和操作HTML_html/css_WEB-ITnose:jsoup 簡(jiǎn)介 jsoup 是一款 Java 的HTML 解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。 jsoup的主要功能如下: 1. 從一個(gè)URL,文件或字符串中解析HTML
        推薦度:
        導(dǎo)讀使用Jsoup解析和操作HTML_html/css_WEB-ITnose:jsoup 簡(jiǎn)介 jsoup 是一款 Java 的HTML 解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。 jsoup的主要功能如下: 1. 從一個(gè)URL,文件或字符串中解析HTML

        jsoup 簡(jiǎn)介

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

        jsoup的主要功能如下:

        1. 從一個(gè)URL,文件或字符串中解析HTML;
        2. 使用DOM或CSS選擇器來查找、取出數(shù)據(jù);
        3. 可操作HTML元素、屬性、文本;

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

        jsoup 的主要類層次結(jié)構(gòu)如下圖所示:



        接下來我們專門針對(duì)幾種常見的應(yīng)用場(chǎng)景舉例說明 jsoup 是如何優(yōu)雅的進(jìn)行 HTML 文檔處理的。

        文檔輸入

        jsoup 可以從包括字符串、URL地址以及本地文件來加載 HTML 文檔,并生成 Document 對(duì)象實(shí)例。

        下面是相關(guān)代碼:

        // 直接從字符串中輸入 HTML 文檔String html = "開源中國社區(qū)" + "

        這里是 jsoup 項(xiàng)目的相關(guān)文章

        ";Document doc = Jsoup.parse(html); // 從URL直接加載 HTML 文檔Document doc = Jsoup.connect("http://www.oschina.net/").get();String title = doc.title(); Document doc = Jsoup.connect("http://www.oschina.net/") .data("query", "Java") //請(qǐng)求參數(shù) .userAgent("I’m jsoup") //設(shè)置User-Agent .cookie("auth", "token") //設(shè)置cookie .timeout(3000) //設(shè)置連接超時(shí)時(shí)間 .post(); //使用POST方法訪問URL // 從文件中加載 HTML 文檔File input = new File("D:/test.html");Document doc = Jsoup.parse(input,"UTF-8","http://www.oschina.net/");


        請(qǐng)大家注意最后一種 HTML 文檔輸入方式中的 parse 的第三個(gè)參數(shù),為什么需要在這里指定一個(gè)網(wǎng)址呢(雖然可以不指定,如第一種方法)?因?yàn)?HTML 文檔中會(huì)有很多例如鏈接、圖片以及所引用的外部腳本、css文件等,而第三個(gè)名為 baseURL 的參數(shù)的意思就是當(dāng) HTML 文檔使用相對(duì)路徑方式引用外部文件時(shí),jsoup 會(huì)自動(dòng)為這些 URL 加上一個(gè)前綴,也就是這個(gè) baseURL。

        例如 開源軟件 會(huì)被轉(zhuǎn)換成 開源軟件。

        解析并提取 HTML 元素

        這部分涉及一個(gè) HTML 解析器最基本的功能,但 jsoup 使用一種有別于其他開源項(xiàng)目的方式??選擇器,我們將在最后一部分詳細(xì)介紹 jsoup 選擇器,本節(jié)中你將看到 jsoup 是如何用最簡(jiǎn)單的代碼實(shí)現(xiàn)。

        不過 jsoup 也提供了傳統(tǒng)的 DOM 方式的元素解析,看看下面的代碼:

        File input = new File("D:/test.html");Document doc = Jsoup.parse(input, "UTF-8", "http://www.oschina.net/"); Element content = doc.getElementById("content");Elements links = content.getElementsByTag("a");for (Element link : links) { String linkHref = link.attr("href"); String linkText = link.text();}


        你可能會(huì)覺得 jsoup 的方法似曾相識(shí),沒錯(cuò),像 getElementById 和 getElementsByTag 方法跟 JavaScript 的方法名稱是一樣的,功能也完全一致。你可以根據(jù)節(jié)點(diǎn)名稱或者是 HTML 元素的 id 來獲取對(duì)應(yīng)的元素或者元素列表。

        與 htmlparser 項(xiàng)目不同的是,jsoup 并沒有為 HTML 元素定義一個(gè)對(duì)應(yīng)的類,一般一個(gè) HTML 元素的組成部分包括:節(jié)點(diǎn)名、屬性和文本,jsoup 提供簡(jiǎn)單的方法供你自己檢索這些數(shù)據(jù),這也是 jsoup 保持瘦身的原因。

        而在元素檢索方面,jsoup 的選擇器簡(jiǎn)直無所不能,

        File input = new File("D:\test.html");Document doc = Jsoup.parse(input,"UTF-8","http://www.oschina.net/"); Elements links = doc.select("a[href]"); // 具有 href 屬性的鏈接Elements pngs = doc.select("img[src$=.png]");//所有引用png圖片的元素 Element masthead = doc.select("div.masthead").first();// 找出定義了 class=masthead 的元素 Elements resultLinks = doc.select("h3.r > a"); // direct a after h3


        這是 jsoup 真正讓我折服的地方,jsoup 使用跟 jQuery 一模一樣的選擇器對(duì)元素進(jìn)行檢索,以上的檢索方法如果換成是其他的 HTML 解釋器,至少都需要很多行代碼,而 jsoup 只需要一行代碼即可完成。

        jsoup 的選擇器還支持表達(dá)式功能,我們將在最后一節(jié)介紹這個(gè)超強(qiáng)的選擇器。

        修改數(shù)據(jù)

        在解析文檔的同時(shí),我們可能會(huì)需要對(duì)文檔中的某些元素進(jìn)行修改,例如我們可以為文檔中的所有圖片增加可點(diǎn)擊鏈接、修改鏈接地址或者是修改文本等。

        下面是一些簡(jiǎn)單的例子:

        doc.select("div.comments a").attr("rel", "nofollow");//為所有鏈接增加 rel=nofollow 屬性 doc.select("div.comments a").addClass("mylinkclass");//為所有鏈接增加 class=mylinkclass 屬性 doc.select("img").removeAttr("onclick"); //刪除所有圖片的onclick屬性 doc.select("input[type=text]").val(""); //清空所有文本輸入框中的文本


        道理很簡(jiǎn)單,你只需要利用 jsoup 的選擇器找出元素,然后就可以通過以上的方法來進(jìn)行修改,除了無法修改標(biāo)簽名外(可以刪除后再插入新的元素),包括元素的屬性和文本都可以修改。

        修改完直接調(diào)用 Element(s) 的 html() 方法就可以獲取修改完的 HTML 文檔。

        HTML 文檔清理

        jsoup 在提供強(qiáng)大的 API 同時(shí),人性化方面也做得非常好。在做網(wǎng)站的時(shí)候,經(jīng)常會(huì)提供用戶評(píng)論的功能。有些用戶比較淘氣,會(huì)搞一些腳本到評(píng)論內(nèi)容中,而這些腳本可能會(huì)破壞整個(gè)頁面的行為,更嚴(yán)重的是獲取一些機(jī)要信息,例如 XSS 跨站點(diǎn)攻擊之類的。

        jsoup 對(duì)這方面的支持非常強(qiáng)大,使用非常簡(jiǎn)單??纯聪旅孢@段代碼:

        String unsafe = "

        開源中國社區(qū)

        ";String safe = Jsoup.clean(unsafe, Whitelist.basic());//
        輸出: //

        開源中國社區(qū)

        jsoup 使用一個(gè) Whitelist 類用來對(duì) HTML 文檔進(jìn)行過濾,該類提供幾個(gè)常用方法:

        如果這五個(gè)過濾器都無法滿足你的要求呢,例如你允許用戶插入 flash 動(dòng)畫,沒關(guān)系,Whitelist 提供擴(kuò)展功能,例如 whitelist.addTags("embed","object","param","span","div"); 也可調(diào)用 addAttributes 為某些元素增加屬性。

        jsoup 的過人之處??選擇器

        前面我們已經(jīng)簡(jiǎn)單的介紹了 jsoup 是如何使用選擇器來對(duì)元素進(jìn)行檢索的。本節(jié)我們把重點(diǎn)放在選擇器本身強(qiáng)大的語法上。下表是 jsoup 選擇器的所有語法詳細(xì)列表。

        基本用法

        以上是最基本的選擇器語法,這些語法也可以組合起來使用,下面是 jsoup 支持的組合用法:

        除了一些基本的語法以及這些語法進(jìn)行組合外,jsoup 還支持使用表達(dá)式進(jìn)行元素過濾選擇。下面是 jsoup 支持的所有表達(dá)式一覽表:

        總結(jié)

        jsoup 的基本功能到這里就介紹完畢,但由于 jsoup 良好的可擴(kuò)展性 API 設(shè)計(jì),你可以通過選擇器的定義來開發(fā)出非常強(qiáng)大的 HTML 解析功能。再加上 jsoup 項(xiàng)目本身的開發(fā)也非常活躍,因此如果你正在使用 Java ,需要對(duì) HTML 進(jìn)行處理,不妨試試。

        以上摘自開源中國社區(qū):

        附:

        jsoup在線API:jsoup 1.6.3 API

        jsoup開發(fā)指南

        版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用Jsoup解析和操作HTML_html/css_WEB-ITnose

        使用Jsoup解析和操作HTML_html/css_WEB-ITnose:jsoup 簡(jiǎn)介 jsoup 是一款 Java 的HTML 解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。 jsoup的主要功能如下: 1. 從一個(gè)URL,文件或字符串中解析HTML
        推薦度:
        標(biāo)簽: 解析 html css
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费涩涩在线视频网| 最近最好的中文字幕2019免费| 免费欧洲美女牲交视频| 亚洲成a人无码亚洲成av无码| 亚洲精品视频在线免费| 亚洲三级在线播放| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲第一页中文字幕| 7723日本高清完整版免费| 亚洲午夜久久久久久尤物| 久久WWW色情成人免费观看| 欧美激情综合亚洲一二区| 亚洲成AⅤ人影院在线观看| fc2免费人成在线| 亚洲av午夜成人片精品网站 | 久久久久se色偷偷亚洲精品av| av无码国产在线看免费网站| 久久亚洲精品国产亚洲老地址 | 亚洲午夜久久影院| 国产精彩免费视频| 亚洲va中文字幕| 亚洲精品色午夜无码专区日韩| 久9这里精品免费视频| 国产精品久久亚洲不卡动漫| 欧洲美熟女乱又伦免费视频| 一级成人a做片免费| 亚洲精品日韩中文字幕久久久| 好吊妞788免费视频播放| 亚洲一区二区三区免费| 亚洲欧洲日本天天堂在线观看| 黄网址在线永久免费观看 | 亚洲AV无码成人精品区天堂| 一二三四影视在线看片免费 | 亚洲精品乱码久久久久66| 中国人xxxxx69免费视频| 国产精品亚洲综合天堂夜夜| 国产精品亚洲片在线观看不卡| 成人免费无码大片A毛片抽搐 | 99re在线精品视频免费| 看一级毛片免费观看视频| 一区二区三区亚洲|