正则 挖网站表格复习

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<string> trList = new List<string>();
            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 = @"(?<=<div (.*)?class=""BOC_main publish""[^>]*?>)([\s\S]*?)(?=</div>)";
                        MatchCollection divMatches = Regex.Matches(content, divPatern);
                        string divContent = string.Empty;
                        foreach (Match match in divMatches)
                        {
                            divContent = match.Groups[0].Value;
                            break;
                        }
                        //提取div内容结束

                        //提取表格内容开始
                        string tablePatern = @"(?<=<table (.*)?[^>]*?>)([\s\S]*?)(?=</table>)";
                        MatchCollection tableMatches = Regex.Matches(divContent, tablePatern);
                        string tableContent = string.Empty;
                        foreach (Match match in tableMatches)
                        {
                            tableContent = match.Groups[0].Value;
                            break;
                        }

                        //提取表格内容结束

                        //提取行开始

                        string trPatern = @"(?<=<tr(.*)?[^>]*?>)([\s\S]*?)(?=</tr>)";
                        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<string> 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<string> GET_TH_OR_TD_LIST(SearchRange range,string row)
        {
            string tmp = "";
            tmp = range.ToString();
            string tdPatern = $@"(?<=(<{tmp}[^>]*?>))(?<tdCell>[\s\S]*?)(?=</{tmp}>)";
            MatchCollection CurrenttdMatchCollection = Regex.Matches(row, tdPatern);
            string td = string.Empty;
            List<string> tdlList = new List<string>();
            List<string> contentList = new List<string>();
            foreach (Match match in CurrenttdMatchCollection)
            {

                td = match.Groups["tdCell"].Value;
                contentList.Add(td);

            }
            return contentList;

        }
        protected void Page_Load(object sender, EventArgs e)
        {
            getHtml();
        }
    }
}
时间: 2024-11-13 04:16:31

正则 挖网站表格复习的相关文章

正则学习网站

菜鸟学习正则 : http://www.runoob.com/regexp/regexp-syntax.html 正则表达式 - 语法 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的. 构造正则表达式的方法和创建数学表达式的方法一样.也就是用多种元字符

正则得到网站主域名

1 function getDomain() { 2 var hostname = window.location.hostname; 3 var ip = hostname.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/g); 4 if (ip) { 5 return ip; 6 } 7 var domain = hostname.match(/([a-z0-9][a-z0-9\-]*?\.(?:com|cn|net|org|gov|info|la|cc|

php实例-正则获取网站音频地址的实例(Listen to this 1)

主要用到了:file_get_contents();preg_match_all(); 这2个函数 查看地址:http://git.oschina.net/xiaoz6/phpExample

尝试做第一个网站

第一个网站雏形 复习: 1.Expression Language El表达语言,只有在jsp页面中才可以使用,本身jsp页面中是默认支持el语言的. 写法:${} 作用: 1)取得作用域的值 2)参数param 3)类型转换 4)查找作用域 5)作用域中容器的属性 6)输出功能 7)运算 8)Javabean属性 9)取得值作为标签的属性值 2.Javaserverpage Standard Tag Language Jstl java服务器页面标准标签语言我们通常使用核心库,前缀置为C 1.

常去的学习网站

阿里:http://mirrors.aliyun.com/ 反思:更改yum源后  用yum clean  all  清除缓存 阿里云epel源:wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo 阿里的yum源更改: [[email protected] ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bac

正则性能调优

这篇文章主要是分享最近在开发中正则的学习心得体会.我们开发,一开始是采用python的正则库,后来为了适应Spring Cloud兼容Java所以正则也相应的修改成为了Java版本,经过测试,Java在匹配速度上相对慢了好多,平台一天需要处理一亿多条日志,但按照当时的处理速度,每天差不多就只能处理了2千多万条,这样的速度,实在扎心,提单申请扩容,那边的负责人说资源不足,好咯,将Java所使用的正则库替换成C++,C++够快了吧,不过,这个库是通过牺牲功能换取性能来实现的. 正则表达式的原理 理论

轻松上手 正则表达式与grep,sed,awk(一)

一些废话: 对于正则表达式,一直都是似懂非懂,看到一些代码,脚本中带有正则,awk,sed,心里总有点虚.主要是记不住,平时又没怎么用,也就没总结了.现在有空,决定总结一下,顺便克服一下看到shell,js这些带有正则就心虚的弱点.打算分三篇文章来写 正文: 一般来说,正则分好几种,但基本都差不多,我所了解的有 "基本正则","扩展正则"及"perl正则",本文更偏向说记录"基本正则"和"扩展正则",它们在

使用方便 正则表达式grep,sed,awk(一)

一些无稽之谈: 对于正则表达式,永远似了解不明白,看到一些代码,脚本定期,awk,sed.心里总有点虚.主要是记不住.平时又没怎么用,也就没总结了. 如今有空,决定总结一下,顺便克服一下看到shell,js这些带有正则就心虚的弱点. 打算分三篇文章来写 正文: 一般来说,正则分好几种.但基本都差点儿相同,我所了解的有 "基本正则","扩展正则"及"perl正则",本文更偏向说记录"基本正则"和"扩展正则",

正则表达式学习方法及笔记

最近参加了百度ife的前端培训,在完成task0002的过程中要求学会正则表达式,曾经在javascript的教学图书中有看过正则表达式,但都讲的不够系统,自己也不够重视,所以就几乎是正则表达式零基础.于是花了不到一个晚上的时间把<入门正则表达式>看完了,一百多页,比网上的大多数教程系统,入门足矣. 首先推荐两个在线测试正则的网站,边学边测试反复实践当然学的更快了. http://regexpal.com/ http://regexr.com/ 个人更喜欢用第二个,功能更加齐全,而且界面更美观