侧边栏壁纸
博主头像
怪客のBlog 博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
C#

使用HtmlAgilityPack爬取并解析网页数据

怪客
2022-04-07 / 0 评论 / 0 点赞 / 353 阅读 / 0 字

安装NuGet包

Install-Package HtmlAgilityPack

XPath基本语法

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
选取当前节点的父节点。
@ 选取属性。

爬取逻辑

我们要爬取的是百度首页的热搜榜数据
image-1660896383289
首先查看元素位置
image-1660896427967
可以看到热搜数据是在这个ul标签下的每个li中存放,因此我们需要进行如下步骤:

  1. 通过Xpath表达式 //ul[@class=‘s-hotsearch-content’]/li 得到这个ul下的所有li
  2. 然后遍历所有li元素,然后通过Xpath表达式 .//span[@class=‘title-content-title’] 得到文本信息的span标签
  3. 获取span标签的文本值然后输出
            string url = "http://www.baidu.com";
            HtmlWeb web = new HtmlWeb();
            HtmlDocument doc = web.Load(url);
            HtmlNode htmlNode = doc.DocumentNode;
            var nodes=htmlNode.SelectNodes("//ul[@class='s-hotsearch-content']/li");
            foreach (var item in nodes)
            {
                var temp = item.SelectSingleNode(".//span[@class='title-content-title']");
                Console.WriteLine(temp.InnerText); 
            }

输出结果

因为有部分内容是动态渲染的所有没获取全
image-1660896776211

0

评论区