HtmlAgilityPack1.8.5所写的根据URL解析网页,获取TABLE里的内容,包含源码

使用c#,WINFORM所写。

一,新建一个窗体,放入一个WebBrowser.

二,在Form1_Load里指定Url,在WebBrowser的DocumentCompleted事件里写入下面代码。

List<HtmlElement> tempLink = webBrowser1.Document.GetElementsByTagName("a").Cast<HtmlElement>().ToList();

            tempLink.ForEach(s =>
            {
                if (s.OuterHtml.Contains(ConfigurationManager.AppSettings["Filter1"]) && s.InnerHtml.Contains(ConfigurationManager.AppSettings["Filter2"]))
                {
                    s.Click += new HtmlElementEventHandler(Link_Click);
                }
            });

三,给需要获取的a添加Click事件。

        private void Link_Click(object sender, HtmlElementEventArgs e)
        {
            string url = this.webBrowser1.StatusText;
            
            if (!url.Equals(""))
            {
                string rowPath = ConfigurationManager.AppSettings["XPath"];
                Hashtable ht = TableHelper.ParsingWeb(url, rowPath);
                MessageBox.Show(ht.Count.ToString());
            }
        }

四,添加处理获取到的HTML标签的类。

public static Hashtable ParsingWeb(string url, string rowPath)
        {
            HtmlWeb web = new HtmlWeb();
            HtmlDocument doc = web.Load(url);
            HtmlNode row = doc.DocumentNode.SelectSingleNode(rowPath);

            Hashtable htTable = new Hashtable();
            var tableRows = row.SelectNodes("//tr").ToList();

            tableRows.ForEach(s=> {
                string strText = Regex.Replace(s.InnerHtml, "<[^>]+>", "");
                strText = Regex.Replace(strText, "&[^;]+;", "");

                //去除\r\n\t以及空格,获取到相应td里面的数据
                var line = strText.Split(new char[] { '\r', '\n', '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();

                htTable.Add(line[0], line[1]);

            });

            return htTable;
        }

五。获取的参数放在App.config里。

源码下载

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值