博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则 挖网站表格复习
阅读量:5972 次
发布时间:2019-06-19

本文共 3871 字,大约阅读时间需要 12 分钟。

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Text;using System.Text.RegularExpressions;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Xml;namespace WebApplication19{    public enum SearchRange    {        th=0,        td=1    }    public partial class WebForm1 : System.Web.UI.Page    {        public string MKT;        private string getHtml()        {            List
trList = new List
(); try { WebClient wc = new WebClient(); using (Stream stream = wc.OpenRead("http://srh.bankofchina.com/search/whpj/search.jsp?erectDate=2001-11-01&nothing=2016-11-04&pjname=1316&page=4")) { using (StreamReader sr = new StreamReader(stream, Encoding.UTF8)) { string content = sr.ReadToEnd(); //提取div内容开始 string divPatern = @"(?<=
]*?>)([\s\S]*?)(?=
)"; MatchCollection divMatches = Regex.Matches(content, divPatern); string divContent = string.Empty; foreach (Match match in divMatches) { divContent = match.Groups[0].Value; break; } //提取div内容结束 //提取表格内容开始 string tablePatern = @"(?<=
]*?>)([\s\S]*?)(?=
)"; MatchCollection tableMatches = Regex.Matches(divContent, tablePatern); string tableContent = string.Empty; foreach (Match match in tableMatches) { tableContent = match.Groups[0].Value; break; } //提取表格内容结束 //提取行开始 string trPatern = @"(?<=
]*?>)([\s\S]*?)(?=)"; MatchCollection trMatchCollection = Regex.Matches(tableContent, trPatern); for (int j = 0; j < trMatchCollection.Count; j++) { Match match = trMatchCollection[j]; string tr = string.Empty; tr = match.Groups[0].Value; trList.Add(tr); } //提取行结束 } //获取表头列元素,或者内容行的单元格元素 trlist[0]是表头 SearchR,ange告诉程序要查表头 还是 内容行 List
thList = GET_TH_OR_TD_LIST(SearchRange.th, trList[0]); System.Collections.ArrayList tdsList = new System.Collections.ArrayList(); for (int i = 1; i < trList.Count; i++) { tdsList.Add(GET_TH_OR_TD_LIST(SearchRange.td, trList[i])); } } } catch (Exception ex) { } return MKT; } private List
GET_TH_OR_TD_LIST(SearchRange range,string row) { string tmp = ""; tmp = range.ToString(); string tdPatern = $@"(?<=(<{tmp}[^>]*?>))(?
[\s\S]*?)(?=
)"; MatchCollection CurrenttdMatchCollection = Regex.Matches(row, tdPatern); string td = string.Empty; List
tdlList = new List
(); List
contentList = new List
(); foreach (Match match in CurrenttdMatchCollection) { td = match.Groups["tdCell"].Value; contentList.Add(td); } return contentList; } protected void Page_Load(object sender, EventArgs e) { getHtml(); } }}

 

转载于:https://www.cnblogs.com/kexb/p/6035938.html

你可能感兴趣的文章
重置以及恢复lLINUX 系统中root用户的密码
查看>>
使用nssm在windows服务器上部署nodejs的express项目
查看>>
后台日志记录约定
查看>>
JDBC原生态开发问题总结
查看>>
Linux - ls
查看>>
PowerShell 列举磁盘文件
查看>>
AUGULAR安装使用
查看>>
Linux核心-第三章 存储管理
查看>>
常见拒绝服务***行为特征与防御方法
查看>>
TwinklingRefreshLayout 小而强大的刷新控件,自带顺滑的越界回弹,v1.04 版精心重构,完美发布啦!...
查看>>
我的友情链接
查看>>
linux系统日常管理的命令
查看>>
微软超融合私有云测试33-SCCM2016部署之SCCM基础配置
查看>>
thymeleaf 设置不校验html标签
查看>>
影响Cache的几个HTTP头信息
查看>>
Oracle 实现行转列
查看>>
如何使用 Idea 远程调试 Java 代码
查看>>
VMware虚拟化技术之二vCenter Server5.5u1部署
查看>>
ExchangeServer2010行为管理之二(需审批才可发送外部邮件)
查看>>
mysql数据库root用户密码重设
查看>>