使用wget镜像具有相同名称的路径和子文件夹的网站

时间:2014-12-30 21:27:52

标签: linux web-crawler wget

我正在尝试制作网站的镜像,但这些网址包含多条路径,这些路径在以正常wget方式复制到磁盘上的文件时会重叠。问题出现在http://example.com/newshttp://example.com/news/article1等网址上。

Wget将这些网址下载为/news/news/article1,但这意味着/news文件会被具有相同名称的文件夹覆盖。

正确的静态镜像需要将这两个网址下载为/news/index.html/news/article1

我尝试通过运行wget两次并相应地移动文件来解决此问题,但这对我来说效果不佳。 /news路径包含需要转换的/news/article1链接。我正在使用-k选项转换链接,但如果我运行wget两次,则不会转换这些无关的下载文件之间的链接。

这是我的命令:

wget -p -r -l4 -k -d -nH http://example.com

以下是我尝试过的一个工作示例:

# wget once at first level (gets /news path but not /news/*)
wget -p -r -l1 -k -nH http://example.com

# move /news file to temp path
mv news /tmp/news.html

# wget again to get everything else (notice the different level value)
wget -p -r -l4 -k -nH http://example.com

# move temp path back to /news/index.html
mv /tmp/news.html news/index.html

在上面的示例中,/news页面上应该指向/news/article1的链接尚未转换。

有人知道如何使用wget来解决这个问题吗?是否有更好的工具可以使用?

1 个答案:

答案 0 :(得分:3)

我明白了!

问题是我假设/news/index.html是我需要的网址。在仔细阅读了手册页后,我发现-E (--adjust-extension)解决了我的问题。此标记强制wget.html扩展名应用于其下载的所有HTML文件。

-khttp://example.com/news --> /news.html http://example.com/news/article1 --> /news/article1.html 耦合以转换链接会产生100%可用的镜像,该镜像具有所需的所有页面。

这是下载文件和路径的示例地图:

http://sitemirror.com/news/article1

作为功能性镜像,这很棒。默认的Web服务器配置(至少对于Apache)似乎允许路径/news/article1.html加载http:/sitemirror.com/news内容。但是,重写可能需要使wget路径不显示文件夹的404或索引。这不应该是艰难的。

哦,所以这是我最后的wget -p -r -l4 -E -k -nH http://example.com 命令:

{{1}}