我想用 wget 下载一个 pdf 文件
URL 如下:
example.com/pdfdl/?pdfnumberid=245
.pdf
此 URL在参数末尾没有扩展名,因此只需登录网站即可下载。
我使用了这个命令:
wget --user=myuser --password=mypass example.com/pdfdl/?pdfnumberid=245
当我运行此代码时,它会下载一个没有扩展名且无法读取的文件
我该怎么做?
编辑:当我使用 Bash 时,它显示“HTTP 请求已发送,正在等待响应... 302 已找到”。无论是否将其放在.pdf
文件末尾都没有区别。.pdf
从 Bash 下载的每个损坏文件的大小都相同。我认为登录存在问题,因为它在 Bash 302 错误中显示重定向。
答案1
-O
您需要使用选项设置输出文件的名称
wget --user=myuser --password=mypass -O pdf-245.pdf example.com/pdfdl/?pdfnumberid=245
答案2
更改命令以使用-O
选项来指示输出文件的名称,如下所示:
wget --user=myuser --password=mypass -O 245.pdf example.com/pdfdl/?pdfnumberid=245
您的文件随后将被下载为245.pdf
。
但如果你从请求中获得 302 状态,则意味着这是一个“302 已找到”重定向。
“超文本传输协议 (HTTP) 302 Found 重定向状态响应代码表示请求的资源已暂时移动到 Location 标头给出的 URL。”
在这种情况下我建议使用卷曲而是像这样:
curl -Lk -u username:password example.com/pdfdl/?pdfnumberid=245 -o 245.pdf
- 告诉
-L
命令跟随位置;意味着 302 和 301 重定向。 - 强制
-k
使用不安全的 SSL 连接,这可能是从命令行访问 HTTPS 站点时所需要的;如果您想看看会发生什么,请随意删除它。 - 这
-u username:password
是用户名和密码。 - 源文件的 URL 如下。
- 最后
-o
是输出文件。