过滤网页中的超链接并下载所有匹配特定模式的超链接

过滤网页中的超链接并下载所有匹配特定模式的超链接

我想从我们组织的图形存储库网页下载所有图形文件。他们是插画家(.ai) 格式和 Corel Draw (.cdr) 格式。

它们是直接超链接的(即<a href="http://server/path-to-file.ai">...</a>.

答案1

wget包括直接支持这一点的功能:

wget -r -A "*.ai,*.cdr" 'address-of-page-with-hyperlinks'

-r启用递归模式,因此它将下载超过给定 URL 的文件,并-A限制最终下载和保留的文件。

答案2

  1. 阅读该页面curl

  2. 过滤带有 的超链接grep。请注意,这利用了它们的格式一致(如<a href="...")这一事实。一个HTML/XML 解析器真的应该使用对于任何稍微复杂一点的事情。

  3. 使用 剪切超链接地址grep -ogrep再次使用 过滤以仅提取目标具有所需扩展名和协议的链接。

  4. 下载这些结果文件wget(或者curl如果指定了输出也可以使用)。另外,我们还提供了echo控制台的 URL。

请注意,为了方便起见,我们在脚本中的过滤顺序与上面的顺序并不完全相同。

重击:

#!/bin/bash
while read url; do
    # Echo URL to terminal
    echo "${url}"
    # Download files
    wget -q "${url}"
done < <(
    # Get page
    curl -s 'address-of-page-with-hyperlinks' | \
    # Filter hyperlinks
    grep -Po 'href="http://[^"]+\.(cdr|ai)"' | \
    grep -Po 'http://[^"]+'
)

相关内容