wget 不能再下载雅虎财经数据了 [英] wget can't download yahoo finance data any more

查看:65
本文介绍了wget 不能再下载雅虎财经数据了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

几周前我无法再下载雅虎财经数据:

Since a few weeks ago I'm not able to download Yahoo finance data any more:

$ wget -O GLD.USA_20170612.txt --no-check-certificate http://chart.finance.yahoo.com/table.csv?s=GLD&a=2&b=1&c=2017&d=11&e=30&f=2017&ignore=.csv
--2017-06-12 12:21:28--  http://gld.usa_20170612.txt/
Resolving gld.usa_20170612.txt (gld.usa_20170612.txt)... failed: No address associated with hostname.
wget: unable to resolve host address ‘gld.usa_20170612.txt’
--2017-06-12 12:21:28--  http://chart.finance.yahoo.com/table.csv?s=GLD&a=2&b=1&c=2017&d=11&e=30&f=2017
Resolving chart.finance.yahoo.com (chart.finance.yahoo.com)... 87.248.114.12, 87.248.116.11, 87.248.116.12, ...
Connecting to chart.finance.yahoo.com (chart.finance.yahoo.com)|87.248.114.12|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://chart.finance.yahoo.com/table.csv?s=GLD&a=2&b=1&c=2017&d=11&e=30&f=2017 [following]
--2017-06-12 12:21:28--  https://chart.finance.yahoo.com/table.csv?s=GLD&a=2&b=1&c=2017&d=11&e=30&f=2017
Connecting to chart.finance.yahoo.com (chart.finance.yahoo.com)|87.248.114.12|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-06-12 12:21:28 ERROR 404: Not Found.

他们改变了一些东西.我从该站点获取了一个新 URL,但它仍然不起作用:

They have changed something. I picked up a new URL from the site, but it still does not work:

$ wget https://query1.finance.yahoo.com/v7/finance/download/GLD?period1=1494584558&period2=1497262958&interval=1d&events=history&crumb=GGHpj6ucgIy
--2017-06-12 12:27:24--  https://query1.finance.yahoo.com/v7/finance/download/GLD?period1=1494584558
Resolving query1.finance.yahoo.com (query1.finance.yahoo.com)... 87.248.116.11, 87.248.116.12, 87.248.114.11, ...
Connecting to query1.finance.yahoo.com (query1.finance.yahoo.com)|87.248.116.11|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized

Username/Password Authentication Failed.

我不明白为什么提到用户名和密码.当我在 https://uk.finance.yahoo 点击下载按钮时.com/quote/GLD/history?p=GLD,它不需要用户名和密码.所以好像不用订阅就可以下载数据了.

I don't understand why it mentions Username and Password. When I click the Download button at https://uk.finance.yahoo.com/quote/GLD/history?p=GLD, it does not ask for the Username and Password. So it seems that data can be downloaded without a subscription.

如果有人知道下载 Yahoo 财务数据的正确 wget 实现,请在此处分享.

If someone knows a proper wget implementation for downloading Yahoo finance data, please share it here.

...

更新:

感谢当前的回复,有人暗示我这里可能涉及cookies".在关键字中搜索与 cookie 类似的问题时,我发现了以下线程:

Thanks to the current replies, I was hinted that "cookies" might be involved here. While searching for the similar problem with cookies in the keywords, I found the following threads:

雅虎财经历史数据下载器网址无效

雅虎财经网址无效

不幸的是,这对我来说太复杂了......如果您能帮我完成这项工作,我将不胜感激.

Unfortunately this is too complex for me... I would appreciate a little help in making this work.

推荐答案

为了处理 Yahoo cokies 我写了以下代码:

In order to deal with Yahoo cokies I have written the following code:

#!/usr/bin/sh

symbol=$1
today=$(date +%Y%m%d)
tomorrow=$(date --date='1 days' +%Y%m%d)

first_date=$(date -d "$2" '+%s')
last_date=$(date -d "$today" '+%s')

wget --no-check-certificate --save-cookies=cookie.txt https://finance.yahoo.com/quote/$symbol/?p=$symbol -O crumb.store

crumb=$(grep 'root.*App' crumb.store | sed 's/,/\n/g' | grep CrumbStore | sed 's/"CrumbStore":{"crumb":"\(.*\)"}/\1/')

wget --no-check-certificate --load-cookies=cookie.txt "https://query1.finance.yahoo.com/v7/finance/download/$symbol?period1=$first_date&period2=$last_date&interval=1d&events=history&crumb=$crumb" -O $symbol.csv

rm cookie.txt crumb.store

使用示例:

$ sh stockdownload_yahoo.sh QQQ 20170508

支持的日期格式示例:

$ date -d 20170328 +%s
1490652000
$ date -d 2017-03-28 +%s
1490652000
$ date -d "Mar 28 2017" +%s
1490652000

这篇关于wget 不能再下载雅虎财经数据了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆