1. 程式人生 > >手把手教學 Android用jsoup解析html

手把手教學 Android用jsoup解析html

1.jsoup介紹

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

2.使用場景

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


Paste_Image.png
接下來開始手把手教學
  • 首先,也是很重要的一步,就是下載jar包,丟到libs裡面

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

    dependencies {
        compile 'org.jsoup:jsoup:1.9.2'
    }
  • 然後,找到你心儀的網頁去抓取資料

這裡我們我繼續使用美食的網頁,然後右鍵檢視網頁原始碼,或者按F12,接下來可以看到一大堆標籤:


Paste_Image.png

找到需要的,例如上圖這個 “美食天下” ,可以看到 “美食天下” 是放在以 <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());
}

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


Paste_Image.png

Jsoup.connect(String url)方法從一個URL載入一個Document物件。如果從該URL獲取HTML時發生錯誤,便會丟擲 IOException,應適當處理。
一旦擁有了一個Document,你就可以使用Document中適當的方法或它父類 ElementNode中的方法來取得相關資料。

public class Element extends Node
public class Document extends Element

很多文章都是說一大堆原理然後放出一個簡單的例子,就跟我上面簡單的打了一個log一樣,然後發現用起來的時候是沒那麼簡單的。為了大家能不看文件也可以直接使用(並且看不懂那一大堆標籤也可以用)

,我決定再舉一個例子(其實也就是比上面多打幾個log):
下圖紅色框框是我們要獲取的資料,可以看到他們對應的節點就是藍色圓圈裡面的<div class="xxx">


Paste_Image.png


廢話不多說上程式碼

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


Paste_Image.png

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

注意:

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

最後上一張應用在專案的效果圖:


Paste_Image.png

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

小結

整堂課分幾步:
1.下載jar包並丟到libs(或者在gradle)
2.找到心儀的網頁
3.用Jsoup.connect()獲取網頁的document
4.檢視網頁原始碼,對準你想要的地方,給他來一個Element.select(String selector)
5.用Node.attr(String key)或者Element.text()方法把資料抽出來
6.沒有6了就是這麼簡單!

相關推薦

手把手教學 Androidjsoup解析html

1.jsoup介紹 很多時候,我們需要從各種網頁上面抓取資料,而jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文字內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作資料。 2.使用場景 下面是一張關於美食的截圖,可以留意到

Android利用Jsoup解析html 開發網站客戶端小記。

這些天業餘時間比較多,閒來無事,想起了以前看過開發任意網站客戶端的一篇文章,就是利用jsoup解析網站網頁,通過標籤獲取想要的內容。好了廢話不多說,用到的工具為 jsoup-1.7.2.jar包,具體jsoup的相關文件,請去這邊看http://jsoup.org/,這裡有全部Api可以查詢。 這裡解析的網

Android通過Jsoup解析Html原始碼

WebViewClient的作用就是幫助WebView處理各種通知、請求事件的,onPageFinished顧名思義在頁面載入完成後進行的操作,通過javascript語法獲取的內容,通過local_obj呼叫InJavaScriptLocalObj中的showSource()方法

Android中利用jsoup解析html頁面

學習jsoup :jsoup學習網站 Android 中使用: 新增依賴 implementation 'org.jsoup:jsoup:1.10.1' 直接上程式碼: package com.loaderman.jsoupdemo; import android.

我的Android筆記(八)—— 使用Jsoup解析Html

想要做一個看新聞的應用,類似Cnbeta客戶端的東西。大致思路如下:根據連結獲取新聞列表頁的html程式碼,然後解析,找到所有的新聞標題和新聞連結用listView顯示,當點選ListView的Ite

通過使用jsoup解析html,繪畫表格生成execl文件

num group wid 字符 for format 格式 colspan tables 1.獲取文件或者字符設置繪畫表格字符編碼 //得到Document並且設置編碼格式 public static Document getDoc(String fileNam

【轉載儲存】Jsoup解析html常用方法

首先我們要清楚 class的繼承關係 Document 繼承於  Element  繼承於 Node  繼承於 Object 首先 我們先研究一下 Element 中的函式作用: 01 addClass(String className)  

使用JSOUP解析HTML文件

 這篇文章主要介紹了Jsoup如何解析一個HTML文件、從檔案載入文件、從URL載入Document等方法,對Jsoup常用方法做了詳細講解,最近提供了一個示例供大家參考 使用DOM方法來遍歷一個文件 從元素抽取屬性,文字和HTML 獲取所有連結 解析和遍歷一個H

Jsoup解析HTML頁面資料的工具

原文地址!尊重原創!   介紹:   GitHub原始碼 點選檢視 程式碼jar包 點選下載 Jsoup是一款比較好的Java版HTML解析器。可直接解析某個URL地址、HTML文字內容。它提供了一套非常省力的API,可通過DOM,CS

爬蟲基礎之Jsoup解析HTML

Jsoup的Maven座標 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1

利用jsoup解析html

1、jsoup簡介 jsoup 是一款 Java的HTML解析器,可直接解析某個URL地址、HTML文字內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作資料。jsoup 的主要功能如下: (1)從一個 UR

python 極好解析 html 標簽的模塊 - BeautifulSoup

圖片 baidu base ... value data 取反 lin tex   記錄下各種使用姿態   測試的 html 代碼: <html> <head> <title>Test</t

關於利用Jsoup解析HTML中 ;變成非傳統空格或亂碼問題解決方法

在寫爬蟲的時候很多時候會遇到這種問題:HTML中原始碼顯示&nbsp;沒問題,但是利用Jsoup的text()方法獲取的文字就會出現問題,一般情況是&nbsp;變成非傳統空格或者亂碼,這樣在解析的時候想切分字串會無法成功。因為&nbsp;是ISO-8

使用Jsoup解析Html == TextView顯示html圖片的方法

想要做一個看新聞的應用,類似Cnbeta客戶端的東西。大致思路如下:根據連結獲取新聞列表頁的html程式碼,然後解析,找到所有的新聞標題和新聞連結用listView顯示,當點選ListView的Item再載入相應的新聞內容。 其中獲取html程式碼,可以使用如下程式碼

Jsoup學習筆記2:Jsoup解析HTML程式碼標籤與屬性

接著上一篇的Jsoup學習筆記1繼續學習,雖然是轉載自上面連結的文章,但是程式做了一點改動,方便自己以後的檢視 package com.daxiang.myjsoup; import org.jsoup.Jsoup; import org.jsoup.nodes.D

jsoup:解析HTML用法小結

1.解析方式 (1)從字串解析  <span style="font-size:18px;">String html = "<html><head><title>First parse</title></h

Java爬蟲入門簡介(三) —— Jsoup解析HTML頁面

上一篇部落格我們已經介紹瞭如何使用HttpClient模擬客戶端請求頁面了。這一篇部落格我們將描述如何解析獲取到的頁面內容。上一節我們獲取了 http://www.datalearner.com/blog_list 頁面的HTML原始碼,但是這些原始碼是提供給瀏覽器解析用的,

Java使用Jsoup解析Html中標籤,新增屬性。

設定Html中標籤屬性的值 問題 為java生成的html檔案mate標籤新增屬性charset=”utf-8”。 方法 可以使用屬性設定方法 Element.attr(String key, String value), 和 Elements.at

Jsoup解析Html(一)

    現在網上流行了一種自由開發者的風氣;就是自己私下寫一個簡易的app上傳到github上;可以以此專案作為開源;同時熟悉git操作;但是很多時候我們都需要一些資料來呈現在app中;如圖片列表,如文字+圖片列表;網上有很多開放式的api可以呼叫,如百度api、http:

Python HTMLParser解析HTML檔案

HTMLParser是Python自帶的模組,使用簡單,能夠很容易的實現HTML檔案的分析。 本文主要簡單講一下HTMLParser的用法.  使用時需要定義一個從類HTMLParser繼承的類,重定義函式: handle_starttag( tag, attrs) handle_starten