WGET 使用错误的文件和扩展名保存可能是由于 BASH
WGET saves with wrong file and extension name possibly due to BASH
我已经在几个论坛主题上尝试过了。
但是,结果我不断遇到一些失败。
重现问题:
这是一个 url 指向一个有 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]
文件被简单地保存为“1”,看起来没有扩展名。
我的预期是该文件将以 .html 扩展名保存,因为它是一个网页。
我正在尝试让 WGET 工作,但如果可以用 CURL 做我想做的事情,我也会接受它作为答案。
只需使用 -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
好吧,您尝试执行的操作存在一些问题。
URL 周围的双引号实际上阻止了 Bash 扩展,因此您并不是真正下载 6 个文件,而是一个带有“{ 1..6}”在里面。您可能不想在 URL 周围加上引号,以允许 bash 将其扩展为 6 个不同的参数。
我注意到所有页面都被称为“1”,而不考虑它们的实际页码。这意味着服务器始终提供同名页面,这使得 Wget 或任何其他工具很难真正复制该网页。
创建论坛镜像的真正方法是使用此命令行:
$ 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
这是您最初寻找的选项。如果下载 text/html
文件但服务器未提供扩展名,这将导致 Wget 使用 .html
扩展名保存文件。
我已经在几个论坛主题上尝试过了。 但是,结果我不断遇到一些失败。
重现问题:
这是一个 url 指向一个有 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]
文件被简单地保存为“1”,看起来没有扩展名。
我的预期是该文件将以 .html 扩展名保存,因为它是一个网页。
我正在尝试让 WGET 工作,但如果可以用 CURL 做我想做的事情,我也会接受它作为答案。
只需使用 -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
好吧,您尝试执行的操作存在一些问题。
URL 周围的双引号实际上阻止了 Bash 扩展,因此您并不是真正下载 6 个文件,而是一个带有“{ 1..6}”在里面。您可能不想在 URL 周围加上引号,以允许 bash 将其扩展为 6 个不同的参数。
我注意到所有页面都被称为“1”,而不考虑它们的实际页码。这意味着服务器始终提供同名页面,这使得 Wget 或任何其他工具很难真正复制该网页。
创建论坛镜像的真正方法是使用此命令行:
$ 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
这是您最初寻找的选项。如果下载 text/html
文件但服务器未提供扩展名,这将导致 Wget 使用 .html
扩展名保存文件。