作者jackzzkao (Jackkao)
看板java
標題[問題] 使用 Jsoup 解析 html 發生了問題
時間Wed May 9 00:30:17 2012
可以請問一下各位朋友,有人試過用 jsoup 來解析 html 網頁嗎 ?
個人本身寫了一些 android 小app,需要用到 jsoup
重點,問題來了 !
我在解析的過程中,需要解析到 div 底下的東西,而 div 底下又有一層 div,問題出
在第二層 div 始終解不到東西。
ex. <div id="a">
<script>...</script>
<center>
<table>
<tbody>
<tr>
<div id="b">...</div>
</tr>
<tbody>
<table>
<center>
大概是這樣,總之就是最裡面的 div 無法取得內容,我用過 chrome 看過,裡面確實有
資料。
所以來問一下大家有發生過這個問題嗎 ? 是 Bug 嗎 ?
後修正:
我後來有去試了一下,發現到說用 firebug 和 IE 看原始碼,div 這部分並沒有出現
,上網 google 了一下,好像是因為動態 js 還什麼的問題,但用 chrome 看網頁元素
倒是可以正常的顯示出來。所以回歸問題,那就不是 jsoup 的問題了。
我自己的做法如下:
Document doc = Jsoup.parse("網址", timeout);
Elements element = doc.select("div#a").select("div#b");
for (Element e : element) {
System.out.println(e.text());
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 121.254.88.10
→ PsMonkey:沒有提供自己的原始作法,故鎖文 05/09 09:13
※ 編輯: jackzzkao 來自: 121.254.88.10 (05/09 23:09)
推 PsMonkey:我只想問... 為甚麼你不直接 select("div#b") 就好? 05/10 11:06
→ PsMonkey:雖然脫離 Java 主題,不過還是講一下 05/10 11:07
→ PsMonkey:html 不等於 DOM tree 的年代已經很久了...... 05/10 11:08
→ bitlife:把select("div#a")結果單一化成Element而非Elements再試試 05/10 11:18
→ bitlife:當然如果是動態由js產生的element,jsoup永遠select不到 05/10 11:19
→ jackzzkao:問題應該是 js 的問題,後來我才發現,所以PO錯板很 05/10 14:04
→ jackzzkao:不好意思,如果是動態的,chrome又可以看到,那是怎麼做的? 05/10 14:07
→ bitlife:瀏覽器看到的是執行期結果,Jsoup是html源碼層次,兩者不同 05/10 18:17