[原创]用C#做一个简易的自定义股票滚动条
由于QQ的股票面板自定义股票数量有限制,所以考虑自己做一个类似的小东西。
查了一些资料,要抓到实时的股票数据都是要到专门的接口。我们这个小东西有点延时问题也不大,没必要花钱去买那个接口了。数据最简单的来源就是网站,现在很多网站都有实时数据,比如新浪等。
为了快些实做出程序,找个数据结构相对简单的吧,百度的数据就很理想,虽然延时大点,有半小时。
基本结构如此:
<ol><p style="width=100%;LINE-HEIGHT:120%;margin-left:-12pt"><font size=-1><font color=#261CDC>ST昆百大 [000560] </font><font color=#666666> 5/25 15:13 价格 <font color=#e10900>17.41 涨 0.19 (1.10%) </font> 成交 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了。
详细的内容就不发上来了,如果想抓取及时点的数据可以挂接新浪的网页,思路是一样的。
推荐到鲜果: 查阅更多相关主题的帖子: 程序开发 股票



评论
发布者 joechiux
2007-7-12 23:42:10
发布者 匿名用户
2007-7-15 22:43:53