xmllint来解析一个html文件

Mor*_*ive 3 macos bash xpath xmllint

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

<BODY>
<H1>Dublin</H1>
Run Code Online (Sandbox Code Playgroud)

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

xmllint --nowarning --xpath '/HTML/BODY/H1[0]'
Run Code Online (Sandbox Code Playgroud)

问题是某些HTML文件包含格式错误的标签.所以我得到了错误

 parser error : Opening and ending tag mismatch: UL line 261 and LI
</LI>
Run Code Online (Sandbox Code Playgroud)

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

nwe*_*hof 6

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

xmllint --html --xpath '/html/body/h1[1]' - <<EOF
<BODY>
<H1>Dublin</H1>
EOF
Run Code Online (Sandbox Code Playgroud)

版画

<h1>Dublin</h1>
Run Code Online (Sandbox Code Playgroud)