使用jsoup解析html
生活随笔
收集整理的這篇文章主要介紹了
使用jsoup解析html
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們抓取到頁面后,還需要對頁面進行解析。可以使用字符串處理工具解析頁面,也可以使用正則表達式,但是這些技術都會帶來很大的開發成本,所以我們需要一款專門解析html頁面的技術。
jsoup是一款java的html解析器,可以直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似Jquery的操作方法來取出和操作數據。
jsoup的主要功能如下:
-
從一個URL,文件或者字符串中解析HTML
-
使用DOM或CSS選擇器來查找、取出數據
-
可操作HTML元素、屬性、文本
(1)加入pom依賴
? ? ? ?<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency>(2)解析url
? ?@Testpublic void testUrl() throws Exception {//解析URL地址Document doc= Jsoup.parse(new URL("https://movie.douban.com"),1000);//獲取第一個title標簽內的內容String title=doc.getElementsByTag("title").first().text();System.out.println(title);}雖然使用jsoup可以替代HttpClient直接發起請求解析數據,但是往往不會這樣用,因為實際的開發過程中,需要使用到多線程,連接池,代理等方式,而jsoup對這些的支持不是很好,所以我們一般只把jsoup當做html解析工具使用
(3)解析字符串
這里我們將豆瓣電影250的網站html保存下來,然后利用commons-io包的工具類獲取該html的字符串
? ?@Testpublic void testString() throws Exception {//使用工具類讀取文件,獲取字符串String content = FileUtils.readFileToString(new File("C:\\Users\\Desktop\\學習\\豆瓣電影 Top 250.html"), "utf8");//解析字符串Document doc = Jsoup.parse(content);String title = doc.getElementsByTag("title").first().text();System.out.println(title); ?}(4)解析文件
? ?@Testpublic void testFile() throws Exception{//解析文件Document doc = Jsoup.parse(new File("C:\\Users\\Desktop\\學習\\豆瓣電影 Top 250.html"), "utf8");String title = doc.getElementsByTag("title").first().text();System.out.println(title);}(5)使用dom方式遍歷文檔
| 根據id查詢元素 | getElementById |
| 根據標簽獲取元素 | getElementsByTag |
| 根據class獲取元素 | getElementsByClass |
| 根據屬性獲取元素 | getElementsByAttribute |
(6)從元素中獲取數據
? ?@Testpublic void testData() throws Exception {//解析文件Document doc = Jsoup.parse(new File("C:\\Users\\Desktop\\學習\\豆瓣電影 Top 250.html"), "utf8");//根據id獲取數據Element element = doc.getElementById("top-nav-appintro");String str = "";//1.從元素中獲取Idstr = element.id();System.out.println(str);//2.從元素中獲取classNamestr = element.className();System.out.println(str);Set<String> classSet = element.classNames();for (String s : classSet) {System.out.println(s);}//3.從元素中獲取屬性的值String id = element.attr("class ");//4.從元素中獲取所有屬性Attributes attributes = element.attributes();System.out.println(attributes.toString());//5.從元素中獲取文本內容textstr = element.text();System.out.println(str);}(7)Selector選擇器
| 通過標簽查找元素 | tagname |
| 通過Id查找元素 | #id |
| 通過class名稱查找元素 | .class |
| 通過屬性查找元素 | [attribute] |
| 通過屬性值查找元素 | [attr=value] |
?
?
總結
以上是生活随笔為你收集整理的使用jsoup解析html的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用java的HttpClient实现抓
- 下一篇: Linux之bash shell基本命令