我如何才能从网页源代码中“找到”所有链接?

我如何才能从网页源代码中“找到”所有链接?

我想将 https 链接放在单独的文件中。如何在不获取完整代码行(仅获取链接)的情况下实现此目的?

在此处输入图片描述

答案1

首先,不要尝试使用正则表达式解析 HTML...


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

  1. /^ href="/!d- 删除所有与正则表达式不匹配的行^ href="
  2. s/^ href="//- 剪掉前缀
  3. s/"$//- 删除后缀

或者,你可以使用CSS 选择器而不是 XPath,tq(一个 Python 项目):

tq 'a' -a href < file.html

注意:经过讨论grep,我推测是 Unix...如果您有 Cygwin 或 WSL,那么这可能也会在那里起作用。

xmllint(来自的实用程序libxml2) 有 Windows 版本。

相关内容