我尝试使用 Yahoo Finance 和 wget 下载数据,但在获取 cookie 和 crumb 时遇到了一些问题。在本例中我使用了 BTC-USD,并将碎屑数据保存在名为“crumbstore.txt”的文件中。
wget --no-check-certificate --save-cookies=cookie.txt "https://finance.yahoo.com/quote/BTC-USD/history?p=BTC-USD" -O crumbstore.txt
从那里我想提取面包屑字符串并将其插入到下面显示的引用链接中($crumb)。本例中的时间段为 2017-01-01 至 2020-01-06。
wget --no-check-certificate --load-cookies=cookie.txt "https://query1.finance.yahoo.com/v7/finance/download/BTC-USD?period1=1483265281&period2=1578305313&interval=1d&events=history&crumb=$crumb" -O BTC-USD_price.csv
为了查看“crumbstore.txt”文件的结构,我使用 grep 运行了以下代码。
grep -o ".\{0,50\}CrumbStore.\{0,50\}" crumbstore.txt
我能够看到我需要得到的是存储在 "CrumbStore":{"crumb":" 中的一系列字母和数字XXXXXXXXXXXX“}。
这是 crumbstore.txt 的片段,基本任务是提取“BdpohsJbyt”。从文字来看。
"secondary_accounts":{"list":"Pos(r) M(0) P(0) List(n)","list_item":"Bdt(asMenuBorder)","anchor":"Td(n) Td(n):h Py(16px) D(b) Cf C(#000) Bgc(asMenuHoverBgc):h"}}}}},"CrumbStore":{"crumb":"BdpohsJbyt."},"StreamStore":{"articleCategory":{"term":"","label":""}
答案1
你的数据似乎是 JSON 格式的,除非你在一个非常严格的环境中工作,在这种环境中,肮脏的黑客比安装正确的工具更受欢迎,否则你应该只安装jq
(在大多数发行版存储库中可用)并使用它。
如果没有看到实际数据,就不可能写下正确的 jq 调用。
答案2
删除字符串之前和之后的所有内容怎么样,比如
sed -n 's/^.*crumb":"//; s/".*$//p' crumb.store
XXXXXXXXXXX
答案3
我不太清楚你想要得到什么或改变什么。我按照您的方式获取了该文件,并从 crumbstore.txt 文件中提取了您可能需要的字符串:
cat crumbstore.txt | grep -oE 'cru.\w*.:.{13}' | grep -Ev '{|pf'
结果如下:
crumb":"q7md5ctTst0"
crumb":"WvBqKN8S0E5"
crumb":"q7md5ctTst0"
crumb":"q7md5ctTst0"
crumb":"q7md5ctTst0"
为了从引号中提取 11 个字符的字符串,我使用了 awk
cat crumbstore.txt | grep -oE 'cru.\w*.:.{13}' | grep -Ev '{|pf' | awk -F'"' '{print $3}'
结果如下:
q7md5ctTst0
WvBqKN8S0E5
q7md5ctTst0
q7md5ctTst0
q7md5ctTst0
这是你想要的吗?