linux 使用wget从JSON请求下载文件

eufgjt7s  于 2023-03-22  发布在  Linux
关注(0)|答案(2)|浏览(397)

我正在尝试下载最新的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"])')

这是可行的,但是我同时使用curlwget,我觉得这看起来不对。有没有办法只使用wget

wmomyfyw

wmomyfyw1#

wget URLcurl -O URL基本相同。
curlwget -o- URL基本相同。
但是既然你已经在使用python了,为什么不直接从python发起HTTP请求呢?
或者不使用python,而是使用jq从JSON中提取相关位:

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

nnsrf1az2#

我建议在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,然后我使用urlretrieveurl下载文件,将其保存在当前工作的名称fname下目录。

相关问题