ZetCode

在 C# 中读取网页

最后修改于 2023 年 7 月 5 日

在本文中,我们将展示如何在 C# 中获取网页。

本文展示了如何使用 HttpClientFlurl.HttpRestSharp 读取页面。

注意: 内置的 HttpWebRequestWebClient 已过时,不应再用于 HTTP 请求。

在本教程的示例中,我们从一个小网页 webcode.me 读取网页。

使用 HttpClient 的 C# 读取网页

HttpClient 提供了一个基类,用于发送 HTTP 请求和接收来自 URI 标识的资源的 HTTP 响应。

Program.cs
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", "C# console program");

var content = await client.GetStringAsync("http://webcode.me");

Console.WriteLine(content);

代码示例使用 HttpClient 异步抓取网页。HttpClient 是一种在 .NET 中获取网页的现代方法。

var content = await client.GetStringAsync("http://webcode.me");

await 运算符将一个 awaitable 作为参数;它检查 awaitable 是否已经完成;如果 awaitable 已经完成,则该方法继续运行。GetStringAsync 将内容作为异步操作读取到字符串中。

$ dotnet run
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My html page</title>
</head>
<body>

    <p>
        Today is a beautiful day. We go swimming and fishing.
    </p>

    <p>
            Hello there. How are you?
    </p>

</body>
</html>

使用 Flurl.Http 的 C# 读取网页

Flurl.Http 是一个流畅、可移植、可测试的 HTTP,适用于 C# 语言的第三方客户端库。

$ dotnet add package Flurl.Http

我们安装 Flurl.Http 包。

DownloadPageFlurl.cs
string result = await "http://webcode.me".GetStringAsync();
Console.WriteLine(result);

该示例读取一个小网页并将其内容打印到终端。

string result = await "http://webcode.me".GetStringAsync();

await 运算符应用于异步方法中的任务,以暂停方法的执行,直到等待的任务完成。 该任务代表正在进行的工作。 数据通过 GetStringAsync 扩展方法检索。

使用 RestSharp 读取网页

RestSharp 是一个简单的 REST 和 HTTP API 客户端,适用于 .NET。 它是一个第三方库。

$ dotnet add package RestSharp

我们安装 RestSharp 包。

Program.cs
using RestSharp;

var client = new RestClient("http://webcode.me");
var request = new RestRequest();

var res = await client.ExecuteGetAsync(request);

Console.WriteLine(res.Content);

代码示例使用 RestSharp 库获取网页的内容。 网页是异步下载的。

var client = new RestClient("http://webcode.me");

使用 RestClient 类创建一个 rest 客户端。

var request = new RestRequest();

使用 RestRequest 创建一个请求; 默认情况下是 GET 请求。

var res = await client.ExecuteGetAsync(request);

使用 ExecuteGetAsync 方法异步执行请求。

Console.WriteLine(res.Content);

打印响应的内容。

来源

HttpClient 类 - 语言参考

在本文中,我们展示了如何在 C# 中读取网页。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。 我从 2007 年开始撰写编程文章。 至今,我已经撰写了超过 1,400 篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 C# 教程