我有一个由现有工具生成的HTML页面 - 我无法更改此工具的输出.
不过,我想使用xmllint
与--xpath
选项从下载的网页挑选出的信息数的某些片段.问题是该页面以:
...
并xmllint
立即抛出错误:
html.out:2: parser error : AttValue: " or ' expected ^
这个问题肯定似乎是lang
属性值周围缺少的引号.整个页面都充满了这种问题.(虽然只是零星的.)
几乎每个浏览器都可以解析这个问题 - 我怎么能说服xmllint
这样做呢?我想避免必须注入一个中间步骤来"修复"该文件.相反,我想要:
1)找到一个标志,验证选项等,以帮助解析器,或:
2)使用其他一些工具.(但是什么?xmllint
总是我的命令行XPath命令.)
此外,仅使用xpath
结果:
> xpath html.out '//myquery...' not well-formed (invalid token) at line 2, column 11, ...
Stefano Sanf.. 12
您可以xmllint
使用--html
命令行选项启用HTML解析器.这样,您就可以处理HTML文档.
您可以xmllint
使用--html
命令行选项启用HTML解析器.这样,您就可以处理HTML文档.
如果不中止解析,您可以隐藏错误:
2>/dev/null
然后是 Xidel,我只是从html页面中挑选一些数据.(虽然它并不完美.我被告知两个不能处理的格式错误的文件)
xidel html.out -e //yourquery...
您应该使用宽松的解析器预处理HTML.(这是主要区别:HTML允许比XML更宽松的语法.)也就是说,尝试HTML5-Tidy并让XMLLint处理结果:
input HTML | v Tidy | v xmllint | v result