xmllint来解析一个html文件

时间:2017-03-08 19:18:37

标签: bash macos xpath xmllint

我试图在各种html文件中解析mac上特定标签之间的文本。我正在寻找身体的第一个<H1>标题。示例:

<BODY>
<H1>Dublin</H1>

使用正则表达式我相信是反模式所以我使用xmllint和xpath代替。

xmllint --nowarning --xpath '/HTML/BODY/H1[0]'

问题是某些HTML文件包含格式错误的标签。所以我在

的行上出错了
 parser error : Opening and ending tag mismatch: UL line 261 and LI
</LI>

问题是我无法做到,2>/dev/null因为我完全放弃了这些文件。有什么办法,我可以在这里使用一个XPath表达式,然后说,如果XML不完美就放松一下,只需给出前H1标题之间的值吗?

1 个答案:

答案 0 :(得分:5)

尝试使用--html选项。否则,xmllint将您的文档解析为XML,这比HTML要严格得多。另请注意,XPath索引是基于1的,并且在解析时HTML标记会转换为小写。命令

xmllint --html --xpath '/html/body/h1[1]' - <<EOF
<BODY>
<H1>Dublin</H1>
EOF

打印

<h1>Dublin</h1>