【问题标题】:How do you filter wget follow links using --reject-regex?如何使用 --reject-regex 过滤 wget 关注链接?
【发布时间】:2022-02-19 17:01:01
【问题描述】:

我正在尝试使用 wget 镜像本地存档站点。一切都运行良好(auth 标头等),除了该站点的编写方式是在某个 URL 上调用 GET 方法会删除资源,例如访问

http://site.domain.com/users/Delete/{uid}

删除 id=uid 的用户。我希望wget 关注网站上的所有链接,除了包含"/Delete/" 模式的链接。

根据GNU wget manual,您可以使用wget --reject-regex 过滤URL。我正在使用wget 1.15 版,它没有在libpcre 支持下编译,所以我尝试像这样使用标准POSIX ERE(在其他尝试中):

wget --reject-regex='.*Delete.*' -P /path_to_mirror_dir/ -k -p -m -E -c -rH -Dsite.domain.com https://site.domain.com/Home/(see explainshell)

根据答案 herehere。但是,URL 仍然被跟踪,因此资源被删除。

是否可以使用reject-regex 过滤被关注的 URL?

附:我简要查看了httrack,但当我看不到如何显式发送 HTTP 标头时没有进一步调查。另外,我想了解这个wget 选项。

【问题讨论】:

    标签: regex wget


    【解决方案1】:
    wget --exclude-directories='*/Delete' -P /path_to_mirror_dir/ -k -p -m -E -c -rH -Dsite.domain.com https://site.domain.com/Home/
    

    (Explainshell)

    应该做的伎俩

    【讨论】:

    • 谢谢,但我确实尝试过,它仍然跟随链接。 --exclude-directories 选项是指服务器端的目录 (example),我对此一无所知。
    【解决方案2】:

    好的。问题是recursive accept/reject options 仅适用于--recursive (-r)(如预期的那样),但--mirror (-m) 选项取代了它,因此--reject-regex 模式被忽略了。因此,有效的命令是

    wget --reject-regex='.*Delete.*' -P /path_to_mirror_dir/ -k -p -E -c -rH -Dsite.domain.com https://site.domain.com/Home/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      相关资源
      最近更新 更多