Wget:不带查询字符串的文件名

问题描述 投票:0回答:3

我想从文件下载网页列表。如何阻止 Wget 将查询字符串附加到保存的文件上?

wget http://www.example.com/index.html?querystring

我需要将其下载为

index.html
,而不是
index.html?querystring

wget
3个回答
1
投票

有-O选项:

wget -O file.html http://www.example.com/index.html?querystring

因此您可以稍微更改脚本以将正确的文件名传递给

-O
参数。


0
投票

我最终放弃使用

-O
并将其包装在 bash 函数中以使其更容易。 我把它放在我的
~/.bashrc
文件中:

wget-rmq ()
{
  [ -z "$1" ] && echo 'error: wget-rmq requires a URL to retrieve as the first arg'
  local output_filename="$(echo $1 | sed 's/?.*//g' | sed 's|https.*/||g')"
  wget -O "${output_filename}" "${1}"
}

然后当我想下载文件时:

wget-rmq http://www.example.com/index.html?querystring

替换正则表达式相当简单。 如果在查询字符串开始之前 URL 中出现任何

?
,那么它将中断。 实际上,这种情况并未发生,因为 URL 编码要求
?
在 URL 中为
%3F
,但我想指出这种可能性。


0
投票

如果服务器表现良好并在标头中指定了名称,则可以使用:

wget --content-disposition "$some_url_here"

或者,与

curl
相同:

curl -OJ "$some_url_here"
© www.soinside.com 2019 - 2025. All rights reserved.