专业的编程技术博客社区

网站首页 > 博客文章 正文

揭秘爬虫黑科技:HTML Title标签内容提取,轻松上手!

baijin 2024-08-11 13:42:03 博客文章 16 ℃ 0 评论

有一天,老板不满地说:“喂,你这C#爬虫怎么连标题都没给我抓回来?我需要的是一份完整的报告,包括所有网页的标题,赶紧给我重新抓一遍!”那一刻,我仿佛看到了老板眼中闪烁的怒火,感受到了他对我工作的失望。

我仿佛看到了老板眼中闪烁的怒火,就像是火山即将爆发前的预兆。我心里咯噔一下,知道这次可能玩大了。

我赶紧赔着笑脸说:“老板,真不好意思,这次是我的失误。我马上就去给您抓回那些‘逃跑’的标题!”

其实我心里暗笑,因为那些标题我早就抓回来了,只是故意没展示出来。这可是职场生存法则啊,不能一次交出所有秘密,得留点悬念,让老板对你始终保持期待和好奇。你觉得这样做对吗?欢迎讨论,哈哈!

代码其实很简单:

// 使用XPath查询获取title标签
HtmlNode titleNode = doc.DocumentNode.SelectSingleNode("//title");
//这行代码是使用C#的HtmlAgilityPack库来从HTML文档中提取<title>标签的内容。
//目的是从doc表示的HTML文档中选择第一个<title>标签,并将这个标签的节点对象赋值给titleNode变量。
如果要获取<title>标签中的文本内容,这样写:
string titleText = titleNode?.InnerText;
这里,?.是一个null条件运算符,如果titleNode为null(也就是说没有找到<title>标签),
则titleText会被赋值为null,否则,它会被赋值为<title>标签中的文本内容。

这个代码是怎么使用的呢?下面我解释下实现过程:

        static string? ParseTitleData(string htmlContent)
        {
            if (string.IsNullOrEmpty(htmlContent))
            {
                return null;
            }
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(htmlContent);
            // 使用XPath查询获取title标签
            HtmlNode titleNode = doc.DocumentNode.SelectSingleNode("//title");
            if (titleNode != null)
            {
                // 获取title节点的文本内容
                string titleText = titleNode.InnerText.Trim();
                return "页面标题: " + titleText;
            }
            else
            {
                // 如果没有找到title标签,返回null
                return null;
            }
        }
//这段代码定义了一个名为 ParseTitleData 的静态方法,
//它接受一个 htmlContent 字符串作为输入,并试图从中解析出网页的标题。
//该方法使用 HtmlAgilityPack 库来解析 HTML 内容。

是不是很简单?这个方法的目的是从给定的 HTML 内容中提取网页的标题。如果成功找到标题,它会返回一个包含 "页面标题: " 和实际标题的字符串。如果 HTML 内容为空、null 或不包含 <title> 标签,它会返回 null。

看效果:


完整代码是包括如何异步获取网页内容的。如果有朋友需要的话,请关注我并留言,今天就写到这吧,太晚了,休息啦!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表