C#使用HtmlAgilityPack抓取并分析网页内容

  使用C#抓取网页内容主要包括获取网页数据和分析网页内容两个步骤,网上很多文章介绍使用WebClient、WebBrowser、HttpWebRequest等获取网页数据,从之前微信收藏的文章中找到介绍网页数据抓取的文章《C# 手把手教你爬取优酷电影信息》(微信公众号“DotNet”,参考文献3),其中介绍的HtmlAgilityPack模块既支持根据网址获取内容,也支持通过xpath获取网页内容,使用简单方便,本文学习HtmlAgilityPack模块的基本用法,并以SqlSugar官网文档为例获取其中的各类帮助文档链接(下图左侧圈红处的链接)。
在这里插入图片描述
  新建Winform项目,在Nugut包管理器中搜索并安装HtmlAgilityPack包,
在这里插入图片描述
  使用HtmlAgilityPack命名空间中的HtmlWeb类下载指定网址的内容,使用十分简单,创建HtmlWeb对象实例后调用Load函数即可。
  Load函数返回HtmlDocument对象实例,关于HtmlDocument类的详细介绍见参考文献4,本文中主要调用HtmlDocument.DocumentNode.SelectNodes函数获取网页中的链接地址。
  SqlSugar官网文档的网页源码截图如下所示,网页左侧链接都位于class属性为layui-tree的列表集合内,SelectNodes函数输入参数用xpath语法描述的元素检索条件,根据参考文献2,只需检索class属性为layui-tree的元素内的所有链接元素即可。

在这里插入图片描述

  关键代码及程序运行效果如下所示:

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument docu = web.Load(txtUrl.Text);
HtmlNodeCollection nodes = docu.DocumentNode.SelectNodes(@"//ul[@class='layui-tree']//a");
foreach (HtmlNode node in nodes)
{
    DataGridViewRow dgvr = new DataGridViewRow();
    dgvr.CreateCells(dataGridView1);
    dgvr.Cells[0].Value = dataGridView1.Rows.Count + 1;
    dgvr.Cells[1].Value = node.InnerText;
    dgvr.Cells[2].Value = @"https://www.donet5.com" + node.Attributes["href"].Value;

    dataGridView1.Rows.Add(dgvr);
}

在这里插入图片描述

参考文献:
[1]https://github.com/zzzprojects/html-agility-pack
[2]https://www.jianshu.com/p/b9cc7130debc
[3]https://www.cnblogs.com/foxhappy/p/14450449.html
[4]https://www.cnblogs.com/saodiseng2015/p/9368313.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值