iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0

上次我們提到Jsoup的解析對象分為

  • HTML String解析
  • body片段解析
  • 從URL加载Document解析
  • 從File加载解析

現就一項項的作個簡單說明,有需要進一步了解的可以查官網。
https://jsoup.org/


HTML String解析

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";

當我們宣告Document doc = Jsoup.parse(html);時,表示我們將一段字串透過Jsoup轉成Document類型來操作。

透過這個方式可以取得至少一個head跟body元素,由Document 的方法作後續處理。

body片段解析

String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

我們可以看到字串內,關於<div>的規範不完整。
透過Jsoup.parseBodyFragment我們可以用Jsoup自動補完缺少的部分,並指定給Body使用。

透過這個解析方式將一些不美觀或不完整的HTML元素都納進body元素處理。

從URL加载Document解析

Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();

這邊Jsoup提供了設定網址來作讀取資料來源的用法。
不過有時候會因為內容太大或網址伺服器回應太慢而失敗。

這時候可以透過設定參數來解除原本JSOUP預設容量限制及等待時間

Document doc = Jsoup.connect(m_string).timeout(60000).maxBodySize(0).get()

從File加载解析

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/";);

註:
當本機有一個HTML檔案要做解析時可使用Jsoup.parse(File in, String charsetName, String baseUri) 方法
String baseUri是作為相對路徑的辨別,也就是說當路徑缺少前方主機的位置時,可以藉由String baseUri作補全。


上一篇
來聊Jsoup : Jsoup粗略介紹以及作用
下一篇
來聊Jsoup : JSOUP解析器
系列文
跟Kotlin一起來聊Android元件 或許還有應用,或許還有一些資訊雜談30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言