生活随笔
收集整理的這篇文章主要介紹了
jsoup解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
jsoup官方文檔https://www.open-open.com/jsoup/ ?? 我們抓取到頁面之后,還需要對頁面進行解析。可以使用字符串處理工具解析頁面,也可以使用正則表達式,但是這些方法都會帶來很大的開發成本,所以我們需要使用一款專門解析html頁面的技術。 ??jsoup 是一款基于 Java 語言的 HTML 請求及解析器,可直接請求某個 URL 地址、解析 HTML 文本內容。它提供了一套非常省力的 API,可通過 DOM、CSS 以及類似于 jQuery 的操作方法來取出和操作數據。 ??jsoup的主要功能如下: ??1.從一個URL,文件或字符串中解析HTML; ??2.使用DOM或CSS選擇器來查找、取出數據; ??3.可操作HTML元素、屬性、文本; 注意: ??雖然使用Jsoup可以替代HttpClient直接發起請求解析數據,但是往往不會這樣用,因為實際的開發過程中,需要使用到多線程,連接池,代理等等方式,而jsoup對這些的支持并不是很好,所以我們一般把jsoup僅僅作為Html解析工具使用 jsoup 一個重要用途是解析 HTML 文件,在開始用之前,必須弄清 jsoup 中的 Node、Element、Document 的相關概念及區別,防止因概念混淆而導致亂用錯用。
??1.Document(文檔):指整個 HTML 文檔的源碼內容 ??2.Node(節點):HTML 中所包含的內容都可以看成一個節點。節點有很多種類型:屬性節點(Attribute)、注釋節點(Note)、文本節點(Text)、元素節點(Element)等。解析 HTML 內容的過程,其實就是對節點操作的過程。 ??3.Element(元素):元素是節點的子集,所以一個元素也是一個節點。 ?? 代碼演示
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
) ; }
}
總結
以上是生活随笔 為你收集整理的jsoup解析 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。