使用xmllint和xpath与不完美的HTML文档?

 981378224_014f95 发布于 2023-01-30 10:39

我有一个由现有工具生成的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文档.

3 个回答
  • 您可以xmllint使用--html命令行选项启用HTML解析器.这样,您就可以处理HTML文档.

    2023-01-30 10:42 回答
  • 如果不中止解析,您可以隐藏错误:

    2>/dev/null
    

    然后是 Xidel,我只是从html页面中挑选一些数据.(虽然它并不完美.我被告知两个不能处理的格式错误的文件)

    xidel  html.out -e //yourquery...
    

    2023-01-30 10:42 回答
  • 您应该使用宽松的解析器预处理HTML.(这是主要区别:HTML允许比XML更宽松的语法.)也就是说,尝试HTML5-Tidy并让XMLLint处理结果:

    input HTML
     |
     v
    Tidy
     |
     v
    xmllint
     |
     v
    result
    

    2023-01-30 10:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有