畅享博客 > 航行日志——理论与实践并行 > 程序人生 > [原创]用C#做一个简易的自定义股票滚动条
2007-7-12 12:07:56

[原创]用C#做一个简易的自定义股票滚动条

由于QQ的股票面板自定义股票数量有限制,所以考虑自己做一个类似的小东西。

查了一些资料,要抓到实时的股票数据都是要到专门的接口。我们这个小东西有点延时问题也不大,没必要花钱去买那个接口了。数据最简单的来源就是网站,现在很多网站都有实时数据,比如新浪等。

为了快些实做出程序,找个数据结构相对简单的吧,百度的数据就很理想,虽然延时大点,有半小时。

基本结构如此:

<ol><p style="width=100%;LINE-HEIGHT:120%;margin-left:-12pt"><font size=-1><font color=#261CDC>ST昆百大   [000560]  &nbsp;</font><font color=#666666> 5/25 15:13   &nbsp;价格 &nbsp;<font color=#e10900>17.41   &nbsp;涨 &nbsp;0.19   (1.10%) </font> &nbsp;成交  5,433,487  股    </font><font color=#261CDC> <a href="/baidu?lm=0&si=&rn=10&tn=baidu&ie=gb2312&ct=0&word=stock%3A000560" target=_blank>更多详情</a> <!--<a href="http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=ST%C0%A5%B0%D9%B4%F3&ie=gb2312" target=_blank>实时新闻</a>--></font></font></p></ol>

够简单了吧,现在只要我们输入股票代号,能给出这个结构就OK。

找找百度的入口 http://www.baidu.com/s?ie=gb2312&bs=600001&sr=&z=&cl=3&f=8&wd=600001&ct=0

上边红色标记就是股票代号。

所以抓取的代码可以这样写:

            StringBuilder stockUrl = new StringBuilder();
            stockUrl.AppendLine("http://www.baidu.com/s?ie=gb2312&bs=");
            stockUrl.AppendLine(stockCode);
            stockUrl.AppendLine("&sr=&z=&cl=3&f=8&wd=");
            stockUrl.AppendLine(stockCode);
            stockUrl.AppendLine("&ct=0");

 使用控件WebBrowser

    WebBrowser wbStock.Navigate(stockUrl.ToString());

就这么简单,在WebBrowser的DocumentCompleted中解析抓取过来的内容。

        private void wbStock_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            HtmlDocument htm = this.wbStock.Document;

            if (htm == null)
                return;

            lbShowStock.Items.Clear();
            foreach (HtmlElement he in htm.GetElementsByTagName("ol"))
            {
                //lbShowStock.Items.Add(he.InnerText);
                string msg = he.InnerText;
                char[] splitCh = { ' ' };
               
                string[] spliteStrings = msg.Split(splitCh,StringSplitOptions.RemoveEmptyEntries);

                for (int i = 0; i < spliteStrings.Length-1;i++ )
                {
                    lbShowStock.Items.Add(spliteStrings[i]);
                }
            }

        }

基本功能就实现了。

然后只要用一个Timer定时刷新数据就OK了。

详细的内容就不发上来了,如果想抓取及时点的数据可以挂接新浪的网页,思路是一样的。

 

 

 


推荐到鲜果: 查阅更多相关主题的帖子: 程序开发 股票

评论

Thank you

发布者 joechiux
2007-7-12 23:42:10


Thank

发布者 匿名用户
2007-7-15 22:43:53


您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)