下面的方法获取页面中表格数据,每个页面不相同,获取的方式(主要是正则表达式)不一样,只是提供方法参考。大神勿喷,刚使用了,就记下来了。
其中数据怎么存,主要就看着怎么使用了。只是方便记录就都放在list集合中了。
1 public List<List<string>> DataSearch(string Url) 2 { 3 List<string> listR = null; 4 List<List<string>> list = new List<List<string>>(); 5 6 WebRequest request = WebRequest.Create(Url); //请求url 7 WebResponse response = request.GetResponse(); //获取url数据 8 StreamReader reader = null; 9 reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); 10 string str = reader.ReadToEnd(); //读取的页面数据(源码) 11 12 reader.Close(); 13 reader.Dispose(); 14 response.Close(); 15 string strRegexR = @"(?<=<tr>)([sS]*?)(?=</tr>)"; //构造解析表格行数据的正则表达式 16 //string strRegexD = @"(?<=<td[^>]*>[s]*?)([S]*)(?=[s]*?</td>)"; //构造解析表格列数据的正则表达式 17 //string strRegexD = @"\>(.+?)\<"; 18 Regex regexR = new Regex(strRegexR); 19 MatchCollection mcRows = regexR.Matches(str); //执行匹配,获取行数据 20 21 foreach (Match mr in mcRows ) 22 { 23 listR = new List<string>(); 24 string strRegex = @"<font.*?>(?<value>.*?)</font>"; 25 Regex regex = new Regex(strRegex); 26 MatchCollection mcD = regex.Matches(mr.Groups[0].ToString()); //执行匹配 27 28 for (int i = 0; i < mcD.Count; i++) 29 { 30 string value = mcD[i].Groups["value"].Value; 31 listR.Add(value);//每行的数据放在list集合中,可自行怎么处理本行数据 32 } 33 list.Add(listR); 34 35 } 36 return list; 37 }