簡體   English   中英

清理並將HTML轉換為XML以用於BaseX

[英]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&amp;field-keywords=camera')

這應該可以,但是不能。 我正在查詢主要開發者的原因(似乎是由於某些HTTP重定向),並且在問題解決后會更新答案(或者我知道為什么這不起作用)。 在此之前的解決方法是將文檔提取為文本並將其解析為HTML:

html:parse(fetch:text('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;field-keywords=camera')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM