wget克隆一个网站,链接到目录而不是index.html

时间:2012-02-02 11:05:39

标签: linux bash wget unix

我想用wget克隆一个wordpress博客,以便我可以将它作为静态内容包含在我正在编写的Web应用程序中。

目前我使用以下内容克隆网站:

wget -rk http://sitename.com

这很好用,但生成的html中的链接指向index.html文件。我希望这些链接指向包含该文件的目录。

e.g。对于页面http://sitename.com/blog-post-about-cats/ wget正在生成一个目录“blog-post-about-cats”并在其中放入一个index.html文件。该博客文章的链接写成“../blog-post-about-cats/index.html”,我希望它们是“../ blog-post-about-cats /".

我想我想要它,因为我认为url中的index.html看起来有点难看,这些页面都是关于演示文稿。

有什么想法吗?这是可能的wget或可能是一个不同的命令行工具?

感谢。

2 个答案:

答案 0 :(得分:2)

我假设wget默认不这样做,因为您的本地Web服务器可能配置为提供目录的索引页而不是index.html。最简单的解决方案是使用正则表达式对所有获取的HTML文件进行后处理:

find -name '*.html' | xargs sed -rie 's/href="([^"]*)\/index\.html"/href="\1\/"/gi'

如果此站点上的页面是某些其他类型的文件,例如.php文件,请替换“* .php”或其他任何合适的文件。正则表达式的功能是识别形式为href =“stuff / index.html”的字符串并删除index.html。 xargs和find用于将其应用于所有页面,sed的“-i”标志使其可以就地修改文件。正则表达式中的“gi”标志使它替换所有出现的内容,并且不区分大小写(因为HTML不区分大小写)。

答案 1 :(得分:0)

您可以让wget为您执行此操作。尝试使用:

wget –mirror –convert-links –html-extension –wait=1 https://example.com/

您可以在此处找到更多详细信息: https://aawaara.com/post/188869436762/how-to-clone-any-website-in-the-world-and-host-it