我想从文件下载网页列表。如何阻止 Wget 将查询字符串附加到保存的文件上?
wget http://www.example.com/index.html?querystring
我需要将其下载为
index.html
,而不是 index.html?querystring
有-O选项:
wget -O file.html http://www.example.com/index.html?querystring
因此您可以稍微更改脚本以将正确的文件名传递给
-O
参数。
我最终放弃使用
-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
,但我想指出这种可能性。
如果服务器表现良好并在标头中指定了名称,则可以使用:
wget --content-disposition "$some_url_here"
或者,与
curl
相同:
curl -OJ "$some_url_here"