谷歌财经,如何获取 JSON 数据流?

Posted

技术标签:

【中文标题】谷歌财经,如何获取 JSON 数据流?【英文标题】:Google Finance, how to get the JSON data streamed? 【发布时间】:2011-09-14 04:12:05 【问题描述】:

我之前尝试过解释,但显然失败了!

因此,如果您打开了一个谷歌财务图表,例如:

http://www.google.com/finance?q=INDEXNASDAQ:.IXIC

我想以某种方式在 C# 中使用 (HttpWebRequest) 对象,以便我可以抓取 google 发送到页面的小数据来更新图表。

朋友提到这是 JSON?

我尝试使用以下代码示例,但即使我将 keep alive 属性设置为“true”,它仍然无法正常工作:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.keepalive.aspx#Y369

【问题讨论】:

呃,你什么时候解释的,在哪里解释的? 【参考方案1】:

您还需要更改示例中将Connection 属性设置为Close 的行。注释掉这一行(同时保持 keep-alive 属性设置为 true):

myHttpWebRequest2.Connection = "Close";

您这样做了,您的示例应该可以正常运行。

关于获取数据并使用HttpWebRequest 处理它,您可以这样做。返回的数据不是 JSON - 它看起来像纯文本,我猜 Google 的 javascript 正在解析它。 (我没有检查过 Google Finance 页面上的 javascript,但这是我的猜测。)

使用 Fiddler,来自该 URL 的响应:

http://www.google.com/finance/getprices?q=.IXIC&x=INDEXNASDAQ&i=120&p=10m&f=d,c,v,o,h,l&df=cpct&auto=1&ts=1307994768643

看起来像这样:

EXCHANGE%3DINDEXNASDAQ
MARKET_OPEN_MINUTE=570
MARKET_CLOSE_MINUTE=960
INTERVAL=120
COLUMNS=DATE,CLOSE,HIGH,LOW,OPEN,VOLUME
DATA=
TIMEZONE_OFFSET=-240
a1307994120,2641.12,2641.12,2639.96,2640.01,0
1,2638.76,2642.14,2638.76,2641.13,0
2,2638.95,2640.54,2638.74,2638.79,0
3,2639.85,2640.01,2638.08,2638.95,0
4,2640.07,2640.87,2639.31,2639.88,0
5,2640.31,2640.48,2639.42,2640.08,0
6,2641.09,2641.09,2640.3,2640.31,0

有点神秘,但您可以看到 COLUMNS 如何与底部的数据对齐。此外,f 查询字符串参数似乎指示要返回哪些列(d=date、c=close、v=volume、o=open、h=high、l=low)。

编辑:我应该提到的是,我使用的 URL 是从财务图表页面发送的,以获取更新的数据 - 您可以看到使用 Fiddler 等工具定期请求此 URL。我上面粘贴的响应数据也是由 MSDN 的示例应用程序输出的。

但是注释掉 MSDN 示例中的一行并稍微摆弄一下 Fiddler 应该会为您提供解析来自该 URL 的返回所需的数据和线索。

我希望这会有所帮助!

PS - 我修改后的 MSDN 示例中的第一行如下所示:

HttpWebRequest myHttpWebRequest1 = (HttpWebRequest)WebRequest.Create("http://www.google.com/finance/getprices?q=.IXIC&x=INDEXNASDAQ&i=120&p=10m&f=d,c,v,o,h,l&df=cpct&auto=1&ts=1307994768643");

我对示例中的其他 WebRequest 调用进行了类似的更改...除此之外,我没有更改示例中的任何其他内容。

【讨论】:

嗨,我的控制台窗口在按下回车后似乎关闭了?我期待会有一个“神秘”数据流通过? 在您运行控制台窗口时按 Ctrl+F5...而不仅仅是 F5。当你只用 F5 运行它时它会自动关闭。 Ctrl + F5 将提示您按一个键关闭控制台窗口。

以上是关于谷歌财经,如何获取 JSON 数据流?的主要内容,如果未能解决你的问题,请参考以下文章

如何从谷歌电子表格中获取 json 数据

如何从雅虎财经这样的网站获取数据? [关闭]

JSON,如何从谷歌地图 API 获取所有国家

如何使用Google财经API获取股票报价?

从谷歌金融、雅虎金融或交易所本身获取股票报价

从雅虎财经获取数据[关闭]