现有一个 json 文件,希望下载其中所有的 “ url ” 的文件:
http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json
如何在 Linux 上批量下载呢?使用 wget 一个个复制粘贴效率太低了。
1
hanxiV2EX 2018-08-29 14:40:57 +08:00 via Android
解析 json,对每个 url 执行 wget 命令
|
2
exkernel 2018-08-29 14:41:08 +08:00
sed 一下就出来了, 不会的话用[jq]( https://stedolan.github.io/jq/)
|
3
omph 2018-08-29 14:42:41 +08:00
优雅一点的,用程序解析 json 中的 url,然后下载
暴力点的,正则出 url |
4
fireapp 2018-08-29 14:57:02 +08:00 via iPhone
sed | awk | wget 搞定
|
5
JHerschel 2018-08-29 15:32:13 +08:00
import json
file = open('pathToFile') file_to_json = json.load(file) for a in file_to_json: for b in a['assets']: print(b['url']) wget 或者 requests 搞定。 |
6
hasdream 2018-08-29 15:32:39 +08:00
```
curl http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json | grep url | sed -e 's/"url"\ ://;s/\,//g' | awk '{print "curl -L -O "$1}' | sh ``` |
8
ps1aniuge 2018-08-30 10:56:14 +08:00
win linux 通用 powershell:
|
9
ps1aniuge 2018-08-30 10:58:17 +08:00
$a = Invoke-RestMethod http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json |ConvertFrom-Json
$a.assets.url 和楼上的道理一样。只不过这个网址现在好像,啥命令都不行了,502 Bad Gateway 了。 |
11
ps1aniuge 2018-09-01 17:19:07 +08:00
$url = 'http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json'
$a = Invoke-RestMethod -Uri $url $a.assets.url 测试通过 我不知道网址内容是否变了,反正现在不需要搞 json 了。 |
12
iwtbauh 2018-09-05 08:21:35 +08:00 via Android
jshon 了解一下
#!/bin/bash url=`jshon -e xxxx -e url1 -u` curl -s ... |
13
abcbc 2018-09-23 23:50:10 +08:00
用 jq 来处理很简单:
curl -L http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json | jq -r '.[].assets | .[].url' | xargs -I {} curl -LO {} |