我正在尝试从此网址中提取JSON:here
我想要的输出就像这个https://pastebin.com/BVzUrk6s。由于StackOverFlow字符限制,我无法将其粘贴到此处。
以下是我的尝试:
curl 'https://www.lazada.co.id/-i160040703-s181911730.html?spm=a2o4j.order_details.details_title.1.52ec6664luQAQs&urlFlag=true&mp=1' | grep -Poz '(?<=app.run\()(.*\n)*.*(?=\);)'
但该命令仍然无法提取JSON数据。我该如何解决这个问题?我希望使用纯bash脚本而不安装任何程序来执行此操作。
答案 0 :(得分:0)
以这种方式尝试JSON解析是一个坏主意(TM)。
无论如何,找出可能的东西似乎是一个好主意(TM)。
#!/bin/bash
function parseUrl() {
local url=$1
echo '"childCategories": ['
curl --silent ${url} \
| awk '/<script type="text" class=J_data/ { show=1 } show; /<\/script>/ { show=0 }' \
| egrep -v "script" \
| sed -e 's/]//g' -e 's/\[//g' -e 's/{"childCategoryName":"","childCategoryUrl":""},//g' -e 's/}$/},/g' \
| sed -e 's/,{/,\'$'\n{/g' -e 's/^[ ]*//g' -e 's/{/ {/g' \
| sed -e 's/childCategoryName/name/g' -e 's/childCategoryUrl/url/g'
echo ' ]'
}
parseUrl 'https://www.lazada.co.id/-i160040703-s181911730.html?spm=a2o4j.order_details.details_title.1.52ec6664luQAQs&urlFlag=true&mp=1' \
| tee /tmp/extracted.json
所以你去:curl,awk,egrep,sed。使用风险自负。