WGET使用错误的文件和扩展名保存,可能是由于BASH

时间:2018-06-14 07:50:05

标签: bash url curl wget forum

我已经在一些论坛帖子上尝试了这个。 但是我继续因此而失败。

要复制问题:

这是一个引用6页论坛帖子的网址。

http://forex.kbpauk.ru/showflat.php/Cat/0/Number/107623/page/0/fpart/1/vc/1

我输入控制台的是:

wget "http://forex.kbpauk.ru/showflat.php/Cat/0/Number/107623/page/0/fpart/{1..6}/vc/1"

这就是我得到的:

      --2018-06-14 10:44:17--  http://forex.kbpauk.ru/showflat.php/Cat/0/Number/107623/page/0/fpart/%7B1..6%7D/vc/1
    Resolving forex.kbpauk.ru (forex.kbpauk.ru)... 185.68.152.1
    Connecting to forex.kbpauk.ru (forex.kbpauk.ru)|185.68.152.1|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: unspecified [text/html]
    Saving to: '1'

1                                    [  <=>                                       ]  19.50K  58.7KB/s    in 0.3s

2018-06-14 10:44:17 (58.7 KB/s) - '1' saved [19970]

该文件仅保存为&#34; 1&#34;似乎没有任何扩展。

我的期望是该文件将以.html扩展名保存,因为它是一个网页。

我试图让WGET工作,但如果它可以用CURL做我想做的事情,那么我也会接受这个答案。

2 个答案:

答案 0 :(得分:1)

只需使用-O开关指定输出文件名,否则wget只会默认为您的1

因此,如果您想调用文件what-i-want-to-call-it.html,那么您可以

 wget "http://forex.kbpauk.ru/showflat.php/Cat/0/Number/107623/page/0/fpart/{1..6}/vc/1" -o what-i-want-to-call-it.html

如果您输入控制台wget --help,您将获得wget提供的所有选项的完整列表

要验证它是否有效,请键入以下内容以输出

cat what-i-want-to-call-it.html

答案 1 :(得分:1)

嗯,您尝试做的事情有几个问题。

  1. 您网址周围的双引号实际上阻止了Bash扩展,因此您并未真正下载6个文件,而是使用&#34; {1..6}&#34;在里面。您可能希望不在URL周围加引号以允许bash将其扩展为6个不同的参数。

  2. 我注意到所有页面都被称为&#34; 1&#34;,无论它们的实际页码如何。这意味着服务器始终提供具有相同名称的页面,这使得Wget或任何其他工具很难实际制作网页副本。

  3. 创建论坛镜像的真正方法是使用此命令行:

    $ wget -m --no-parent -k --adjust-extension http://forex.kbpauk.ru/showflat.php/Cat/0/Number/107623/page/0/fpart/1

    让我解释一下这个命令的作用:

    -m --mirror激活镜像模式(递归)
    --no-parent要求Wget不要超过它从中开始的目录 -k --convert-links将编辑您下载的HTML页面,以便其中的链接指向您已下载的其他本地页面。这使您可以在本地浏览论坛页面而无需在线 --adjust-extension这是您最初寻找的选项。如果文件下载.html文件但服务器未提供扩展名,则会导致Wget使用text/html扩展名保存文件。