国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

手把手教學Android用jsoup解析html實例

2019-12-12 02:39:31
字體:
來源:轉載
供稿:網友

1.jsoup介紹

很多時候,我們需要從各種網頁上面抓取數據,而jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。

jsoup官方文檔:https://jsoup.org/cookbook/

2.使用場景

下面是一張關于美食的截圖,可以留意到這是一個html網頁,當我們想要抓取里面的數據的時候,jsoup就能幫到我們很多。


接下來開始手把手教學

首先,也是很重要的一步,就是下載jar包,丟到libs里面

jar包下載地址:http://jsoup.org/download

Android studio玩家可以不下載jar包,在Gradle里面加入

dependencies {  compile 'org.jsoup:jsoup:1.9.2'}

然后,找到你心儀的網頁去抓取數據

這里我們我繼續使用美食的網頁,然后右鍵查看網頁源碼,或者按F12,接下來可以看到一大堆標簽:

找到需要的,例如上圖這個 “美食天下” ,可以看到 “美食天下” 是放在以 <div class="top-bar" id="J_top_bar"> 為節點的 <a title="美食天下" 中,要獲取這個“美食天下”,代碼可以這樣寫:

try {    //從一個URL加載一個Document對象。  Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();  //選擇“美食天下”所在節點  Elements elements = doc.select("div.top-bar");    //打印 <a>標簽里面的title  Log.i("mytag",elements.select("a").attr("title"));}catch(Exception e) {    Log.i("mytag", e.toString());}

接下來看一下打印出來的結果:


Jsoup.connect(String url)方法從一個URL加載一個Document對象。如果從該URL獲取HTML時發生錯誤,便會拋出 IOException,應適當處理。

一旦擁有了一個Document,你就可以使用Document中適當的方法或它父類 Element和Node中的方法來取得相關數據。

public class Element extends Nodepublic class Document extends Element

很多文章都是說一大堆原理然后放出一個簡單的例子,就跟我上面簡單的打了一個log一樣,然后發現用起來的時候是沒那么簡單的。為了大家能不看文檔也可以直接使用(并且看不懂那一大堆標簽也可以用),我決定再舉一個例子(其實也就是比上面多打幾個log):

下圖紅色框框是我們要獲取的數據,可以看到他們對應的節點就是藍色圓圈里面的<div class="xxx">

廢話不多說上代碼

try {    //還是一樣先從一個URL加載一個Document對象。  Document doc = Jsoup.connect("http://home.meishichina.com/show-top-type-recipe.html").get();  //“椒麻雞”和它對應的圖片都在<div class="pic">中  Elements titleAndPic = doc.select("div.pic");  //使用Element.select(String selector)查找元素,使用Node.attr(String key)方法取得一個屬性的值  Log.i("mytag", "title:" + titleAndPic.get(1).select("a").attr("title") + "pic:" + titleAndPic.get(1).select("a").select("img").attr("data-src"));  //所需鏈接在<div class="detail">中的<a>標簽里面  Elements url = doc.select("div.detail").select("a");  Log.i("mytag", "url:" + url.get(i).attr("href"));  //原料在<p class="subcontent">中  Elements burden = doc.select("p.subcontent");  //對于一個元素中的文本,可以使用Element.text()方法  Log.i("mytag", "burden:" + burden.get(1).text());}catch(Exception e) {    Log.i("mytag", e.toString());}

大功告成,接下來看看log


沒有問題!那么教學可以結束了!

注意:

Jsoup.connect(String url)方法不能運行在主線程,否則會報NetworkOnMainThreadException

最后上一張應用在項目的效果圖:


有沒有發現熟悉的椒麻雞?很酷炫有木有!

小結

整堂課分幾步:

1.下載jar包并丟到libs(或者在gradle)

2.找到心儀的網頁

3.用Jsoup.connect()獲取網頁的document

4.查看網頁源碼,對準你想要的地方,給他來一個Element.select(String selector)

5.用Node.attr(String key)或者Element.text()方法把數據抽出來

6.沒有6了就是這么簡單!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 徐州市| 政和县| 洮南市| 辉南县| 富顺县| 繁昌县| 遂宁市| 广宁县| 平顶山市| 兴安县| 大姚县| 乃东县| 吉首市| 万载县| 赣州市| 广平县| 延川县| 黄石市| 陇川县| 甘南县| 越西县| 河津市| 南漳县| 高阳县| 温州市| 和平县| 垫江县| 塔城市| 洞头县| 富阳市| 遂川县| 通化县| 灵丘县| 绥棱县| 华阴市| 鄄城县| 且末县| 夏邑县| 丽水市| 东兰县| 卓资县|