Google Finance Parsing

        // qStr can only accept 1 stock query.
        // Multiple stocks query will be done later.
        private GoogleFinance getStockDetail(String qStr)
        {
            GoogleFinance gf = new GoogleFinance();
            String q = this.getStockString("http://finance.google.com/finance/info?client=ig&q=" + qStr).Trim();

            if (q.Equals(""))
            {
                return null;
            }
            else
            {
                // parsing, only one stock
                // 1. { }
                String[] op = { "{", "}" };
                String[] s1 = q.Split(op,StringSplitOptions.RemoveEmptyEntries);
                String s1f = s1[1];

                // 2. , \n
                s1f = s1f.Replace(" : ", ":");
                s1f = s1f.Replace(": ", ":");
                s1f = s1f.Replace(" :", ":");

                s1f = s1f.Replace(",", "");
                String[] op2 = {"\n"};
                String[] s2 = s1f.Split(op2,StringSplitOptions.RemoveEmptyEntries);                

                foreach(String s2f in s2)
                {
                    // 3. ":"
                    String[] op3 = { "\":\"" };
                    String[] s3 = s2f.Split(op3, StringSplitOptions.RemoveEmptyEntries);

                    String param, value;
                    param = s3[0].Replace("\"", "");
                    value = s3[1].Replace("\"", "");

                    // 4. addin
                    /*
                        id : Internal Google Security ID?  
                        t : Ticker  
                        e : Exchange Name  
                        l : Last Price  
                        l_cur : Last Price with Currency  
                        lt : Last Trade Date/Time  
                        c : Change (in ccy) - formatted with +/-  
                        cp : Change (%)  
                     */
                    if (param.Equals("id"))
                        gf.id = value;
                    else if (param.Equals("t"))
                        gf.ticker = value;
                    else if (param.Equals("e"))
                        gf.exchangeName = value;
                    else if (param.Equals("l"))
                        gf.lastPrice = value;
                    else if (param.Equals("l_cur"))
                        gf.lastPriceCurrency = value;
                    else if (param.Equals("lt"))
                        gf.lastTradeDateTime = value;
                    else if (param.Equals("c"))
                        gf.changeInCCY = value;
                    else if (param.Equals("cp"))
                        gf.changPercentage = value;
                }

                return gf;
            }

            
        }

        private String getStockString(String qStr)
        {
            try
            {
                HttpWebRequest request = WebRequest.Create(qStr) as HttpWebRequest;
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream    
                    StreamReader reader = new StreamReader(response.GetResponseStream());

                    // Console application output    
                    return reader.ReadToEnd();
                }  
            }
            catch (Exception ex)
            {
                return "";
            }
        }

more fucntions:

        protected void Timer2_Tick(object sender, EventArgs e)
        {

            gf = this.getStockDetail("NASDAQ:GOOG");

            String lp = gf.lastPrice;
            float llp = 0;
            if (Session["lastPrice"] == null)
            {
                Session.Add("lastPrice", lp);
                llp = float.Parse(lp);
            }
            else
            {
                llp = float.Parse(Session["lastPrice"].ToString());
                Session["lastPrice"] = lp;
            }

            float diff = llp - float.Parse(lp);

            if (diff == 0)
            {
                lp = "<font color='black'>" + lp + "</font>";
            }
            else if (diff > 0)
            {
                lp = "<font color='red'>" + lp + "</font>";
            }
            else if (diff < 0)
            {
                lp = "<font color='green'>" + lp + "</font>";
            }

            String changccy = gf.changeInCCY;
            String frontc = changccy.Substring(0, 1);

            if(frontc.Equals("+"))
            {
                changccy = "<font color='green'>" + changccy + "</font>";
            }
            else if(frontc.Equals("-"))
            {
                changccy = "<font color='red'>" + changccy + "</font>";
            }

            StringBuilder output = new StringBuilder();
            output.AppendFormat("id:{0}<br/>Ticker:{1}<br/>Exchange Name:{2}<br/>Last Price:{3}<br/>Trade Time:{4}<br/>Change in CCY:{5}<br/>Change in Percentage:{6}<br/>{7}<br/>"
                , gf.id, gf.ticker, gf.exchangeName, lp, gf.lastTradeDateTime, changccy, gf.changPercentage, DateTime.UtcNow.ToString());

            Label1.Text = output.ToString();
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值