程序员开发实例大全宝库

网站首页 > 编程文章 正文

C# 正则获取网页内容, 抓取html源代码里的 title

zazugpt 2024-09-07 01:51:23 编程文章 20 ℃ 0 评论

在C#中,你可以使用System.Net.Http.HttpClient来从网页获取HTML内容,然后使用System.Text.RegularExpressions.Regex来解析和提取HTML中的<title>标签内容。以下是一个简单的示例,演示了如何执行此操作:

csharpusing System;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main(string[] args)
    {
        try
        {
            // 要抓取内容的网页URL
            string url = "http://example.com";
            
            // 发送HTTP GET请求获取网页内容
            string htmlContent = await client.GetStringAsync(url);

            // 正则表达式,用于匹配<title>标签内的内容
            string titlePattern = @"<title>(.+?)</title>";

            // 使用Regex.Match方法查找匹配项
            Match match = Regex.Match(htmlContent, titlePattern);

            // 如果找到了匹配项
            if (match.Success)
            {
                // 提取<title>标签内的内容
                string title = match.Groups[1].Value;

                // 输出提取到的title
                Console.WriteLine("网页标题: " + title);
            }
            else
            {
                Console.WriteLine("未找到<title>标签。");
            }
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine("\nException Caught!");
            Console.WriteLine("Message :{0} ", e.Message);
        }
    }
}

在这个示例中,我们首先创建了一个HttpClient实例,然后使用GetStringAsync方法异步获取网页的HTML内容。接下来,我们定义了一个正则表达式titlePattern,用于匹配<title>标签中的文本。Regex.Match方法用于在HTML内容中查找匹配项。如果找到匹配项,我们就从匹配结果中提取出标题文本并打印出来。

请注意,使用正则表达式解析HTML可能不是最可靠的方法,因为HTML的结构可能会非常复杂,并且正则表达式可能无法正确处理所有情况。在实际应用中,建议使用HTML解析库(如AngleSharp或HtmlAgilityPack)来解析HTML文档,这样可以更健壮和准确地提取所需的信息。

下面是一个使用HtmlAgilityPack库提取网页标题的示例:

csharpusing System;
using System.Net.Http;
using HtmlAgilityPack;
using System.Threading.Tasks;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main(string[] args)
    {
        try
        {
            // 要抓取内容的网页URL
            string url = "http://example.com";
            
            // 发送HTTP GET请求获取网页内容
            string htmlContent = await client.GetStringAsync(url);

            // 加载HTML内容到HtmlDocument对象
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(htmlContent);

            // 使用XPath查询找到<title>元素并获取其InnerText
            var titleNode = doc.DocumentNode.SelectSingleNode("//title");
            if (titleNode != null)
            {
                string title = titleNode.InnerText;
                Console.WriteLine("网页标题: " + title);
            }
            else
            {
                Console.WriteLine("未找到<title>标签。");
            }
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine("\nException Caught!");
            Console.WriteLine("Message :{0} ", e.Message);
        }
    }
}

在这个示例中,我们使用了HtmlAgilityPack库来加载HTML内容,并使用XPath查询来定位<title>标签。这种方法通常比使用正则表达式更加稳定和可靠。在使用HtmlAgilityPack之前,你需要通过NuGet安装它:

bashInstall-Package HtmlAgilityPack

或者,如果你使用.NET Core CLI,可以运行:

bashdotnet add package HtmlAgilityPack

Tags:

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

欢迎 发表评论:

最近发表
标签列表