【问题标题】:Exclude directories from wget to create sitemap从 wget 中排除目录以创建站点地图
【发布时间】:2020-08-19 10:42:16
【问题描述】:

我正在尝试使用 shell 脚本来抓取网站以获取所有页面的列表。我找到了 shell 脚本“由 Elmar Hanlhofer https://www.plop.at 编写”,它运行良好。但是,我需要排除目录并且文档对我不起作用。

# Example, exclude files from /print and /slide: 
# files=$(find | grep -i html | grep -v "$SITE/print" | grep -v "$SITE/slide")

我需要排除位于 /support(和所有子目录)的论坛安装,因此我将代码修改为:

files=$(find | grep -i html | grep -v "$SITE/support")

但它仍在扫描 /support/directory/directory/ 等。如何修改 grep 命令以排除 /support AND ALL CHILD DIRECTORIES?

我对 linux / unix 命令非常陌生,所以我可能无法正确表达这一点。谢谢。

【问题讨论】:

  • 请发布脚本的链接。 find | grep -i html | grep -v "$SITE/support" 与 wget 无关。您需要将 --exclude-directories=support 之类的内容传递给 wget 命令。
  • 这里是脚本的链接 -> plop.at/en/xml-sitemap.html 我按照第 117 行的内联文档进行操作。

标签: linux macos shell unix terminal


【解决方案1】:

原始脚本会下载整个网站,运行 find 过滤掉你不想要的内容。

wget相关部分复制如下,

wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --convert-links \
     --restrict-file-names=windows \
     --no-parent \
     --directory-prefix="$TMP" \
     --domains $DOMAIN \
     --user-agent="$AGENT" \
     $URL >& $WGET_LOG

要排除support目录,添加--exclude-directories选项,

wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --convert-links \
     --restrict-file-names=windows \
     --no-parent \
     --directory-prefix="$TMP" \
     --domains $DOMAIN \
     --user-agent="$AGENT" \
     --exclude-directories=/support \ 
     $URL >& $WGET_LOG

如果您想对目录进行更多控制,请阅读this answer

【讨论】:

  • 谢谢。在使用类似解决方案的语法上苦苦挣扎。 --exclude-directories=/support, /foo, /bar \ 对吗?
  • 是的,多个排除项用逗号分隔。 www.example.com/a/b,如果要排除目录b,--exclude-directories=/a/b,而不是--exclude-directories=/b
  • 递归地执行它(即使我在 wget 命令中看到 --recursive \,我是否会将这个 files=$(find | grep -i html) 更改为这个 files=$(find | grep -r html)?我想排除列出的 IE /a/b 的所有子目录,而不必列出子目录的所有子目录。
  • 不,您不需要更改files=$() 命令。如果您希望显示目录/a/b,而不是其子目录,我认为应该将其更改为--exclude-directories=/a/b/*
猜你喜欢
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 2015-07-26
相关资源
最近更新 更多