2013-11-23 75 views
2

我想解析一些HTML文檔,似乎Racket的html和xml庫不能很好地處理這個問題。例如,這裏是一個HTML文檔:Racket中的HTML解析問題

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Test</title> 
     <script> 
      var k = "<scr"; 
     </script> 
    </head> 
    <body> 
    </body> 
</html> 

無論read-html也不read-xml可以解析此。他們認爲var k = "<scr"中的<scr是開標籤的一部分。

那麼,有沒有更好的方法來做到這一點?

回答

1

試試html-parsing包。

html解析解析行爲是寬容的,因爲它接受錯誤的HTML,優雅地處理好幾類HTML語法錯誤,而不會產生解析錯誤。這對於解析任意真實世界的Web頁面至關重要,因爲許多頁面實際上包含會破壞嚴格或驗證解析器的語法錯誤。 HTML解析的錯誤處理旨在通常模擬流行的Web瀏覽器對錯誤HTML結構的解釋。我們委婉地稱這種解析「務實」。

儘管我不確定它是否會處理這樣的<script>標籤,但它可能。作者Neil Van Dyke在Racket mailing list上活躍。

+1

根據http://planet.racket-lang.org/package-source/neil/html-parsing.plt/2/0/planet-docs/doc/index.html,HtmlPrag已經過時。 [html-parsing](http://planet.racket-lang.org/display.ss?package=html-parsing.plt&owner=neil)似乎工作。 – EFanZh

+0

@FanZh對不起,我感到困惑。我通過同一作者鏈接到該軟件包的更新版本更新了我的答案。 –