作者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
1F:→ PsMonkey:没有提供自己的原始作法,故锁文 05/09 09:13
※ 编辑: jackzzkao 来自: 121.254.88.10 (05/09 23:09)
2F:推 PsMonkey:我只想问... 为甚麽你不直接 select("div#b") 就好? 05/10 11:06
3F:→ PsMonkey:虽然脱离 Java 主题,不过还是讲一下 05/10 11:07
4F:→ PsMonkey:html 不等於 DOM tree 的年代已经很久了...... 05/10 11:08
5F:→ bitlife:把select("div#a")结果单一化成Element而非Elements再试试 05/10 11:18
6F:→ bitlife:当然如果是动态由js产生的element,jsoup永远select不到 05/10 11:19
7F:→ jackzzkao:问题应该是 js 的问题,後来我才发现,所以PO错板很 05/10 14:04
8F:→ jackzzkao:不好意思,如果是动态的,chrome又可以看到,那是怎麽做的? 05/10 14:07
9F:→ bitlife:浏览器看到的是执行期结果,Jsoup是html源码层次,两者不同 05/10 18:17