我想解析一些HTML文档,看来Racket的html和xml库无法很好地处理这个问题。例如,这是一个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
都无法解析此问题。他们认为<scr
中的var k = "<scr"
是开始标记的一部分。
那么,有没有更好的方法呢?
答案 0 :(得分:1)
试用html-parsing包。
html解析解析行为是允许的,因为它接受错误的HTML,优雅地处理几类HTML语法错误,而不会产生解析错误。这对于解析任意现实世界的Web页面至关重要,因为许多页面实际上包含会破坏严格或验证解析器的语法错误。 html-parsing对错误的处理旨在通常模拟流行的Web浏览器对错误HTML结构的解释。我们委婉地称这种解析为“务实”。
虽然我不确定它是否会像这样处理<script>
标签,但它可能会。作者Neil Van Dyke积极参与Racket mailing list。