📜  C# 抓取 html 文档 - C# (1)

📅  最后修改于: 2023-12-03 15:13:51.701000             🧑  作者: Mango

C# 抓取 HTML 文档 - C#

在开发Web应用程序时,经常需要从网页中获取数据并进行处理。使用C#编程语言,我们可以方便地抓取HTML文档,并提取所需的数据。

1. 使用HttpClient类发送HTTP请求

首先,我们需要使用HttpClient类发送HTTP请求来获取HTML文档。以下是一个示例代码:

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

class Program
{
    static async Task Main()
    {
        using (HttpClient client = new HttpClient())
        {
            HttpResponseMessage response = await client.GetAsync("https://www.example.com");
            response.EnsureSuccessStatusCode();
            string html = await response.Content.ReadAsStringAsync();
            Console.WriteLine(html);
        }
    }
}

在上面的代码中,我们使用了HttpClient类发送了一个GET请求,获取了"https://www.example.com"网页的HTML文档。然后,我们使用ReadAsStringAsync方法将响应的内容读取为字符串,并将其打印到控制台上。

2. 使用HtmlAgilityPack解析HTML文档

要从HTML文档中提取特定的数据,我们可以使用HtmlAgilityPack库来解析HTML文档。以下是一个示例代码:

using HtmlAgilityPack;

// ...

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://www.example.com");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@href]");

if (nodes != null)
{
    foreach (HtmlNode node in nodes)
    {
        string href = node.GetAttributeValue("href", "");
        Console.WriteLine(href);
    }
}

在上面的代码中,我们首先使用HtmlWeb类创建了一个HtmlDocument对象,并加载了"https://www.example.com"网页的HTML文档。然后,我们使用XPath表达式"//a[@href]"来选择所有具有href属性的<a>标签。最后,我们遍历所选的节点,并打印出其href属性的值。

3. 使用正则表达式匹配HTML文档

除了使用HtmlAgilityPack库,我们还可以使用正则表达式来匹配和提取HTML文档中的数据。以下是一个示例代码:

using System;
using System.Text.RegularExpressions;

// ...

string html = "<html><body><h1>Example</h1><p>Hello, world!</p></body></html>";
string pattern = "<h1>(.*?)</h1>";
Match match = Regex.Match(html, pattern);

if (match.Success)
{
    string header = match.Groups[1].Value;
    Console.WriteLine(header);
}

在上面的代码中,我们定义了一个包含HTML标记的字符串。然后,我们使用正则表达式"<h1>(.*?)</h1>"来匹配包含在<h1>标签中的文本。通过使用Match方法和Groups属性,我们可以提取匹配的结果,并将其打印到控制台上。

总结:

以上介绍了如何使用C#抓取HTML文档,并提取其中的数据。我们可以使用HttpClient类发送HTTP请求来获取HTML文档,然后使用HtmlAgilityPack库或正则表达式来解析和提取所需的数据。这些工具和技术可以帮助我们更方便地处理和分析Web数据。