日期:2014-05-18 浏览次数:20873 次
string url = "http://stock.finance.sina.com.cn/hkstock/finance/01398.html"; WebRequest request = WebRequest.Create(url); //请求url WebResponse response = request.GetResponse(); //获取url数据 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312")); string tempStr = reader.ReadToEnd(); //string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));//读取txt string pattern = @"(?i)<div[^>]*?class=(['""])sub01_tt fblue\1[^>]*?>[\s\S]*?<span[^>]*?class=(['""])\s*?selected\2[^>]*?><a[^>]*?>(?<title>[^<]*?)</a></span>[\s\S]*?"; pattern += @"<div[^>]*?class=(['""])sub01_cc\3[^>]*?>[\s\S]*?(?<table>((?!</?table>)[\s\S])*</table>)"; string tableHtml = string.Empty; foreach (Match m in Regex.Matches(tempStr, pattern)) { //循环输出 string type = m.Groups["title"].Value.Trim(); switch (type) { case "重要财务指标": tableHtml = m.Groups["table"].Value; break; case "资产负债表": tableHtml = m.Groups["table"].Value; break; case "现金流量表": tableHtml = m.Groups["table"].Value; break; case "综合损益表": tableHtml = m.Groups["table"].Value; break; } }
------解决方案--------------------
樓上熱心了
------解决方案--------------------
1楼的正则真是用的如火纯清啊,佩服佩服
------解决方案--------------------
楼主的问题,不是几十行代码能解决的。
需要解决的问题有:
1.年报数据是通过在列表中选择"年报",然后调用js的selectData动态从服务器取回的。
思路一:使用浏览器控件,模拟选择年报,然后使用正则从页面中匹配数据。
思路二:分析利用 selectData中返回的数据,此方法可能不需要正则,但又出现session模拟的问题
------解决方案--------------------
现在也在纠结抓取信息的问题,看到匹配数据的正则表达式脑壳都大了,
------解决方案--------------------
问题是,并不知道你想要得到的结果是什么格式的,只能匹配到table
------解决方案--------------------
先确定具体要的内容,按情况改下正则再提取