[英]Clean and convert HTML to XML for BaseX
我想在HTML源上使用BaseX運行一些XQuery命令,這些源可能充滿了必須刪除的<script>
, <style>
節點以及必須具有一對的未關閉標簽( <br>
, <img>
)。 (例如, 該頁面的骯臟來源)
“ 將HTML轉換為XML ”建議使用Tidy,但是它沒有GUI,並且在我的源代碼上似乎無法正常工作(它不會輸出任何內容),並且我懷疑它是否會刪除腳本和其他不必要的標記。 順便說一句,它很舊了。
由於找不到任何可以滿足我需求的問題,我再次提出了問題。 因為它非常接近用於編碼和查詢的工具,所以我在這里詢問了它。
BaseX集成了TagSoup ,可以將HTML轉換為格式良好的XHTML。
大多數BaseX發行版已經捆綁了TagSoup,如果您是從Linux系統信息庫中安裝BaseX的,則可能需要手動添加它(例如,在Debian和Ubuntu上,它稱為libtagsoup-java
)。 上面鏈接的文檔中提供了不同安裝選項的更多詳細信息。
然后,使用以下命令將TagSoup解析器設置為默認值
SET PARSER html
或在XQuery序言中使用
declare option db:parser "html";
之后,只需獲取所需的文檔即可。 您鏈接的Amazon網站的示例:
declare option db:parser "html";
doc('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=camera')
這應該可以,但是不能。 我正在查詢主要開發者的原因(似乎是由於某些HTTP重定向),並且在問題解決后會更新答案(或者我知道為什么這不起作用)。 在此之前的解決方法是將文檔提取為文本並將其解析為HTML:
html:parse(fetch:text('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=camera')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.