使用 wget 从 JSON 请求下载文件

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

我正在尝试下载最新的

just
二进制文件,我可以在 bash 中使用以下代码行来完成此操作:

wget -q $(curl -s https://api.github.com/repos/casey/just/releases/latest | python -c 'import json,sys;print(json.load(sys.stdin)["assets"][-1]["browser_download_url"])')

这可行,但我同时使用

curl
wget
,我觉得看起来不对。有没有办法只用
wget
来做到这一点?

linux bash wget
3个回答
0
投票

wget URL
curl -O URL
基本相同。

curl
wget -o- URL
基本相同。

但是既然你已经使用了python,为什么不直接从python发起HTTP请求呢?

或者不使用 python,而是使用 从 JSON 中提取相关位:

curl -O "$(curl https://api.github.com/repos/casey/just/releases/latest | jq -r '.assets|last|.browser_download_url')"

0
投票

我建议按照以下方式使用标准库完成

python
中的所有操作

import json, urllib.request
with urllib.request.urlopen('https://api.github.com/repos/casey/just/releases/latest') as response:
    url = json.load(response)["assets"][-1]["browser_download_url"]
fname = url.split('/')[-1]
urllib.request.urlretrieve(url, fname)

说明:我使用

urllib.request
观察到
urlopen
的行为与
open
类似,但允许通过网络读取数据,它可以与
json.load
一起使用,与
open
相同。我提取所需的 URL,然后从它的最后部分创建 fname,然后使用
urlretrieve
url
下载文件,并将其保存在当前工作目录中的名称
fname
下。


0
投票

是的,使用

-O
标志和文件名。

wget -O ./filename.json "https://hostname/path-to-json"
© www.soinside.com 2019 - 2024. All rights reserved.