wget - 困难 - 如何从页面下载所有链接,包括不同的路径?

wget - 困难 - 如何从页面下载所有链接,包括不同的路径?

为了使解释简单且有趣,让我们假设我想下载所有提到的人的维基百科页面这里使用一个 wget 命令,可能还有相当数量的我不感兴趣的其他页面。请不要关闭它。如果你认为这很简单,那就尝试一下吧。

答案1

C:\blah>wget -r -l 1 -w 1 -t 1 -T 5 -nd -k -e "robots=off"  http://en.wi
kipedia.org/wiki/List_of_inventors_killed_by_their_own_inventions

我无法快速测试,因为它需要时间才能完成,因为它每秒下载一个链接。如果它运行得很快,他们可能会阻止你。此外,如果执行 -k,那么它可能会在之后运行,而如果你在中间按 ctrl-c,则不会运行,但你可以让它自行运行或删除 -k 和 -nd 并在中间停止它,看看它如何运行。

-r -l 1 <--- 非常关键,这正是您的标题所要求的,跟随链接,下载链接。(是的,包括不同的路径链接,但如果您想要外国主机上的链接,您也需要-H)

-w 1 -t 1 -T 5 <-- 因此 -w 1 在每个 http 请求之间等待 1 秒,否则 wikipedia 服务器可能会生气并阻止您或采取其他措施。因为他们似乎并不真的希望任何人蜘蛛访问他们的网站。-t 1(如果失败则重试一次链接).. -T 是如果无法下载链接则等待的时间。如果它遇到一个死链接,你不希望它等待 20 秒并重试 20 次。否则下载所有文件将花费比应有的时间更长的时间。. -w 1 是其中最重要的,因为你不希望因拖慢他们的服务器而导致任何暂时阻止下载任何内容的情况。

-e“robots=off”<---这很关键,否则它将无法工作。这可以绕过维基百科试图阻止蜘蛛程序。

-nd <-- 不是那么必要.. 它只是折叠目录,因此只需将文件放在一个目录中即可。你可能得到或得不到你想要的。你可能想把它省略掉。

-k <-- 转换链接,使它们不再指向在线网页,而是指向下载的本地文件。问题是,这显然可能在下载后发挥作用wget 不转换链接 所以这就是为什么我不能只下载一点并真正测试它。你也可以手动完成。使用搜索和替换..在你的索引页 List_of_inventors_killed_by_their_own_inventions.htm 上,所以任何说/wiki/James_Douglas,_4th_Earl_of_Morton你可以改变的东西..虽然这可能没问题..你可以省略 -nd..所以你会在“wiki”子目录中获得所有这些文件。或者,如果需要,你可以将文件移动到 wiki 子目录中。要么让你的目录树与链接匹配,要么让链接与你的目录树匹配。

我在下载网站时有点笨拙。我遇到了问题。有时我会使用 editpad pro 和 powergrep 来通过正则表达式更改 html。自己转换内容。这很麻烦。这些程序不是免费的,但其他程序是免费的。在此之前,我会使用记事本搜索和替换单个文件或一些可以对一批文件进行搜索和替换的免费程序。而 ms word 有时会剪切块 alt-drag。如果需要,编辑 html。很麻烦。但是那条 wget 行应该可以解决一些问题。

有时我会 grep 某个页面的所有链接,这样我就只有一个链接文件,然后我执行 wget -i fileoflinks,这样就不会出现问题了!不过我也会执行 -w 1 -t 1 -T 2 或类似的命令,这样就不会拖慢服务器。而且使用这种方法,就不会出现问题了。

相关内容