答案1
XPath可以给你你想要的 - 它是专门为此设计的:
//a/@href
然后使用 XPath xmllint
(其他实用程序也存在):
xmllint --shell --html file.html <<<'cat //a/@href'
它会给你一堆东西,包括提示(/ >
)、属性名称(href="..."
)和分隔符(-------
)...因此,将它们过滤出来、排序,然后获取唯一 URL 的列表:
xmllint --shell --html file.html <<<'cat //a/@href' \
| sed '/^ href="/!d;s/^ href="//;s/"$//' \
| sort \
| uniq
全部沒有grep
。
在这里,我们用来sed
:
/^ href="/!d
- 删除所有与正则表达式不匹配的行^ href="
s/^ href="//
- 剪掉前缀s/"$//
- 删除后缀
或者,你可以使用CSS 选择器而不是 XPath,tq
(一个 Python 项目):
tq 'a' -a href < file.html
注意:经过讨论grep
,我推测是 Unix...如果您有 Cygwin 或 WSL,那么这可能也会在那里起作用。
xmllint
(来自的实用程序libxml2) 有 Windows 版本。