日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NekoHtml 解析内容时需要注意的地方

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NekoHtml 解析内容时需要注意的地方 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果需要在HTML頁面中提取數據,那么NekoHTML 是個不錯的工具。因為HTML跟XML不一樣,可能存在一些格式不完整的元素,譬如沒有end tag的table等,這個時候,NekoHTML是個很盡責的清道夫和修理工,可以幫助我們整理這些缺陷數據,最終生成一個DOM Tree。? 得到DOM Tree話,使用XPath就可以輕松獲取所需數據了:-)

? 下面是幾個需要注意的問題:

1、如何使用NekoHTML?

???? 必須在 Java Build Path里加入 nekohtml.jar , xercesImpl.jar 以及xalan.jar。下載的NekoHTML目錄中并沒有xercesImpl.jar和xalan.jar,需要自己下載。



2、如何獲取XPath?

??? 當然大家可以把網頁的代碼下下來,然后使用“人工智能”的方式獲取,但是過程確實讓人眼花繚亂、心力交瘁。使用FireBug吧,可以自動生成XPath。

??? updated:

??? Firebug生成的XPath中如果含有TBODY標簽,需要把TBODY去掉,否則不能正確獲取網頁的內容。如Firebug生成的XPath為/html/body/table/tbody/tr,那么則需要修改為/html/body/table/tr。



4、如何正確結合NekoHTML和XPath?

??? XPath的Tag必須大寫。如

??? String divXpath = "//DIV";//正確

??? String divXpath = "//div";//錯誤
???
??? 節點的屬性按照頁面中實際的大小寫進行書寫
??? 如: //DIV[@class="title"]/EM[@class="right"]/A
?? 意思就是找到頁面中div的class為title的大塊,然后向下找節點為EM,同時其class為right的小塊,再繼續延伸找到此小塊下的A節點。

需要注意的是,你寫的xpath路徑必須得是連續的,比如說
<div class="title">
?? <div>
????? <em class="right"><a></a></em>
?? </div>
</div>

這個時候如果你按照上述的xpath來找a標簽的話,很顯然是找不到的,因為div class=“title”下是沒有em的,對于新手需要特別注意。


對于xpath的寫法,可以參考 http://www.w3school.com.cn/xpath/

5.對于table的處理

需要注意的是如果你給解析器的字符串是下面的這種形式
<tbody>
?? <tr>
????? <td id="tag"><a href="sdfs.html">ABC</a></td>
?? </tr>
</tbody>

如果我現在想要找上述內容中的td,給定XPATH //TD[@id='tag'],你會發現,程序根本無法找到這個node,原因是對于neko來說,對于一個不完整的table,他根本不會將其組裝成一個dom樹,也就是說上面的內容經過解析器轉換之后,就只會保留
<a href='sdfs.html'>
??? ABC
</a>
這一段內容,其他的已經被neko無視掉了。
解決辦法,在這段內容的前后加入一段table的閉合標簽之后再放入解析器中進行解析
<table>
<tbody>
?? <tr>
????? <td id="tag"><a href="sdfs.html">ABC</a></td>
?? </tr>
</tbody>
</table>

總結

以上是生活随笔為你收集整理的NekoHtml 解析内容时需要注意的地方的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。