C#爬虫获取网页中表格数据

        /// <summary>

        /// C#爬虫获取网页中表格的数据

        /// </summary>

        public void GetDataFromNet() {

            //爬取的网页地址

            string url="http://www.sse.net.cn/index/singleIndex?indexType=cbcfi";

            //若是POST请求,下面一行代码解注释

            //request.Method = "POST";

            WebRequest request = WebRequest.Create(url);

            WebResponse response = (WebResponse)request.GetResponse();

            Stream dataStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);

            //此处将爬取到的内容转换为HTML

            string strHTML = reader.ReadToEnd();

            //也可以将HTML直接转换为dynamic对象,按需选择

            //dynamic Datas = JsonConvert.DeserializeObject(strHTML);

            var list = new List<string>();

            //正则表达式获取table所有行==>mc

            Regex reg = new Regex("(?is)(?<=<table[^>]*?[^>]*?>(?:(?!</?table).)*)(?is)<tr[^>]*?[^>]*?>(?:\\s*<td[^>]*>(.*?)</td>)*\\s*</tr>");

            MatchCollection mc = reg.Matches(strHTML);

            foreach (Match mat in mc)

            {

                //正则表达式获取每行所有的td

                Regex reg1 = new Regex(@"<td.*?>(?<value>.*?)</td>");

                //mat.Value是表格中每一行的HTML字符串

                bool abc = false;

                foreach (Match m in reg1.Matches(mat.Value))//类似循环一行的每个td

                {

                    string val = m.Groups["value"].Value;

                    if (val.IndexOf("本期") != -1)

                    {

                        list.Add(val.Substring(6));

                    }

                    if (val == "秦皇岛-广州(6-7万DWT)")

                        abc = true;

                    if (abc)

                        list.Add(m.Groups["value"].Value);

                        //后续处理,保存到数据库

                }

            }

            reader.Close();

            dataStream.Close();

            response.Close();

        }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值