| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖, 1 人收藏
标题:一个很麻烦的问题,特来求教各位大哥~
只看楼主 加入收藏
liveths
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-23
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:3 
一个很麻烦的问题,特来求教各位大哥~
近日需要做一个项目,有以下一个技术问题解决不到,特来请教各位大哥姐姐指点一下~
winform程序,使用正则表达式将页面:http://datainfo.stock. 源文件中的
"沪市大盘驱动股"股票数据提取出来并在程序界面上用文本的形式显示出来
显示文本格式如下:
中国人寿 601628 1.06 0.03% 32.00 0.82% 20070 62710
中国平安 601318 0.51 0.02% 57.56 0.84% 61650 107134
这里的思路是首先用webclient获取页面html所有源代码,然后才用正则表达式去匹配某个地方,然后在某个地放下查找 <tr> </tr>行中的每一个 <td> </td>开始的数据,然后用replace去掉所有没用的html代码。
但是思路是有了,可惜在下对正则表达式是在不是很有研究,特来求教各位高手
搜索更多相关主题的帖子: 麻烦 
2009-12-23 08:17
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 
看过你说的东西,这个也不必这么烦啊,直接解析一个HTM 文件就是了,以XML的方式解析就行了.

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-12-23 08:50
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:20 
这个问题确实很复杂, 用正则表达式是解决不了的, 用下面的代码可以解决
在页面分别放置 Button, WebBrowser, TextBox(多行)

        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://datainfo.stock.);
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            HtmlDocument doc = webBrowser1.Document;
            HtmlElementCollection tables = doc.Body.GetElementsByTagName("TABLE");

            StringBuilder sb = new StringBuilder();

            foreach (HtmlElement table in tables)
            {
                HtmlElementCollection rows = table.GetElementsByTagName("TR");
                for (int i = 0; i < rows.Count; i++)
                {
                    HtmlElement row = rows[i];
                    HtmlElementCollection cells = row.GetElementsByTagName("TD");
                    
                    if (i == 0 && cells.Count != 8)
                        break;

                    for (int j = 0; j < cells.Count; j++)
                    {
                        HtmlElement cell = cells[j];

                        if (i == 0 && j == 0 && cell.InnerText != "股票名称")
                            break;
                        if(j<cells.Count-1)
                        {
                            sb.Append(cell.InnerText);
                            sb.Append(" ");
                        }
                        else
                        {
                            sb.AppendLine(cell.InnerText);
                        }
                    }
                }
            }
            textBox1.Text = sb.ToString();
        }
2009-12-23 09:57
liveths
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-12-23
收藏
得分:0 
其实用正则已经搞定了,是一个高手的,改天放源码上来给各位看看。
2009-12-30 11:47
快速回复:一个很麻烦的问题,特来求教各位大哥~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016196 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved