在 shell 下使用 xmllint 来通过 XPath 解析 html
突然有个想法,想直接下载 html 文件并将里面的 meta 标签都拿出来,于是便去翻 Google 了。
xmllint 命令是 libxml 附带的工具(GNOME libxml2)。
其中一个用法是通过 --xpath
来选择输出对应的元素。
而 XPath(XML Path Language)是一个设计来查询 xml 内容的语言,可以在对应的维基页面查看描述。
一个简单的用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| curl -s 'https://www.youtube.com/watch?v=973sEAQZKzY' | xmllint --html --xpath /html/head/meta -
# Outputs: # <meta charset="UTF-8"/> # <meta name="ResourceLoaderDynamicStyles" content=""/> # <meta name="generator" content="MediaWiki 1.43.0-wmf.26"/> # <meta name="referrer" content="origin"/> # <meta name="referrer" content="origin-when-cross-origin"/> # <meta name="robots" content="max-image-preview:standard"/> # <meta name="format-detection" content="telephone=no"/> # <meta name="viewport" content="width=1120"/> # <meta property="og:title" content="XPath - Wikipedia"/> # <meta property="og:type" content="website"/>
|
需要注意,在对 html 使用的时候,需要加上 --html
参数。xmllint 会通过 stderr 输出原 html 里有问题的地方,可以按需忽略。
如此整齐的输出,可以在后面接诸如 sed、tr、awk、grep 之类的文本流处理命令了。