生活随笔
收集整理的這篇文章主要介紹了
jsoup解析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
jsoup官方文檔https://www.open-open.com/jsoup/ ?? 我們抓取到頁面之后,還需要對(duì)頁面進(jìn)行解析。可以使用字符串處理工具解析頁面,也可以使用正則表達(dá)式,但是這些方法都會(huì)帶來很大的開發(fā)成本,所以我們需要使用一款專門解析html頁面的技術(shù)。 ??jsoup 是一款基于 Java 語言的 HTML 請(qǐng)求及解析器,可直接請(qǐng)求某個(gè) URL 地址、解析 HTML 文本內(nèi)容。它提供了一套非常省力的 API,可通過 DOM、CSS 以及類似于 jQuery 的操作方法來取出和操作數(shù)據(jù)。 ??jsoup的主要功能如下: ??1.從一個(gè)URL,文件或字符串中解析HTML; ??2.使用DOM或CSS選擇器來查找、取出數(shù)據(jù); ??3.可操作HTML元素、屬性、文本; 注意: ??雖然使用Jsoup可以替代HttpClient直接發(fā)起請(qǐng)求解析數(shù)據(jù),但是往往不會(huì)這樣用,因?yàn)閷?shí)際的開發(fā)過程中,需要使用到多線程,連接池,代理等等方式,而jsoup對(duì)這些的支持并不是很好,所以我們一般把jsoup僅僅作為Html解析工具使用 jsoup 一個(gè)重要用途是解析 HTML 文件,在開始用之前,必須弄清 jsoup 中的 Node、Element、Document 的相關(guān)概念及區(qū)別,防止因概念混淆而導(dǎo)致亂用錯(cuò)用。
??1.Document(文檔):指整個(gè) HTML 文檔的源碼內(nèi)容 ??2.Node(節(jié)點(diǎn)):HTML 中所包含的內(nèi)容都可以看成一個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)有很多種類型:屬性節(jié)點(diǎn)(Attribute)、注釋節(jié)點(diǎn)(Note)、文本節(jié)點(diǎn)(Text)、元素節(jié)點(diǎn)(Element)等。解析 HTML 內(nèi)容的過程,其實(shí)就是對(duì)節(jié)點(diǎn)操作的過程。 ??3.Element(元素):元素是節(jié)點(diǎn)的子集,所以一個(gè)元素也是一個(gè)節(jié)點(diǎn)。 ?? 代碼演示
import org
. apache
. commons
. io
. FileUtils
;
import org
. jsoup
. Jsoup
;
import org
. jsoup
. nodes
. Document
;
import org
. jsoup
. nodes
. Element
;
import org
. jsoup
. select
. Elements
;
import org
. junit
. Test
; import java
. io
. File
;
import java
. net
. URL ;
public class JsopTest { @Test
public void testDocument ( ) throws Exception
{ Document doc1
= Jsoup
. connect ( "http://www.itcast.cn/" ) . get ( ) ; Document doc2
= Jsoup
. parse ( new URL ( "http://www.itcast.cn/" ) , 1000 ) ; String html
= FileUtils
. readFileToString ( new File ( "jsoup.html" ) , "UTF-8" ) ; Document doc3
= Jsoup
. parse ( html
) ; System
. out
. println ( doc1
) ; System
. out
. println ( doc2
) ; System
. out
. println ( doc3
) ; } @Test
public void testJsoupHtml ( ) throws Exception
{ Document doc
= Jsoup
. parse ( new File ( "jsoup.html" ) , "UTF-8" ) ; Element element
= doc
. getElementById ( "city_bj" ) ; System
. out
. println ( element
. text ( ) ) ; element
= doc
. getElementsByTag ( "title" ) . first ( ) ; System
. out
. println ( element
. text ( ) ) ; element
= doc
. getElementsByClass ( "s_name" ) . last ( ) ; System
. out
. println ( element
. text ( ) ) ; element
= doc
. getElementsByAttribute ( "abc" ) . first ( ) ; System
. out
. println ( element
. text ( ) ) ; element
= doc
. getElementsByAttributeValue ( "class" , "city_con" ) . first ( ) ; System
. out
. println ( element
. text ( ) ) ; String str
= element
. id ( ) ; System
. out
. println ( str
) ; str
= element
. className ( ) ; System
. out
. println ( str
) ; str
= element
. attr ( "id" ) ; System
. out
. println ( str
) ; str
= element
. attributes ( ) . toString ( ) ; System
. out
. println ( str
) ; str
= element
. text ( ) ; System
. out
. println ( str
) ; Elements span
= doc
. select ( "span" ) ; for ( Element e
: span
) { System
. out
. println ( e
. text ( ) ) ; } str
= doc
. select ( "#city_bj" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( ".class_a" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( "[abc]" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( "[class=s_name]" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( "h3#city_bj" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( "li.class_a" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( "span[abc]" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( "span[abc].s_name" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( ".city_con li" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( ".city_con > ul > li" ) . text ( ) ; System
. out
. println ( str
) ; str
= doc
. select ( ".city_con > *" ) . text ( ) ; System
. out
. println ( str
) ; }
}
總結(jié)
以上是生活随笔 為你收集整理的jsoup解析 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。