在本文中,我们展示了如何在 C# 中抓取网页。
本教程显示了如何使用HttpWebRequest
,WebClient
,HttpClient
,Flurl.Http
和RestSharp
读取页面。
在本教程的示例中,我们从一个小型网页 webcode.me 中读取了一个网页。
C# 使用HttpClient
读取网页
HttpClient
提供了一个基类,用于从 URI 标识的资源发送 HTTP 请求和接收 HTTP 响应。
Program.cs
该代码示例使用HttpClient
异步抓取网页。
await
运算符将 awaitable 作为参数; 检查是否已经完成等待; 如果等待已完成,则该方法继续运行。 GetStringAsync()
将内容读取为字符串,作为异步操作。
这是输出。
用WebClient
读取网页
WebClient
提供了用于向 URI 标识的资源发送数据和从中接收数据的通用方法。
Program.cs
该代码示例使用WebClient
获取网页。
DownloadString()
方法检索指定的资源。 此方法在下载资源时阻塞。
在第二个示例中,我们为WebClient
提供了一种非阻塞方法。
Program.cs
该代码示例使用WebClient
获取网页的 HTML 代码。 这次操作是异步的。
DownloadStringCompleted
事件在异步资源下载操作完成时发生。
DownloadStringAsync
方法下载指定为 String 或 Uri 的资源。 该方法不会阻塞调用线程。
C# 使用HttpWebRequest
读取网页
HttpWebRequest
类提供对属性和方法的支持,这些属性和方法使用户可以使用 HTTP 直接与服务器进行交互。 此 API 现在已标记为过时。
Program.cs
该示例读取站点的内容并将其打印到控制台中。
用WebRequest.Create()
方法创建一个HttpWebRequest
。 它以 URL 作为参数。
从请求中,我们使用GetResponse()
方法获得了HttpWebResponse
。
我们将网页的内容读入字符串。
数据被打印到控制台。
C# 使用Flurl.Http
读取网页
Flurl.Http 是用于 C# 语言的流畅,可移植,可测试的 HTTP 第三方客户端库。
我们安装Flurl.Http
软件包。
DownloadPageFlurl.cs
该示例读取一个小型网页并将其内容打印到终端。
await
运算符应用于异步方法中的任务,以暂停该方法的执行,直到等待的任务完成为止。 该任务代表正在进行的工作。 使用GetStringAsync()
扩展方法检索数据。
用RestSharp
读取网页
RestSharp 是.NET 的简单 REST 和 HTTP API 客户端。 它是一个第三方库。
我们安装RestSharp
软件包。
Program.cs
该代码示例使用 RestSharp 库获取网页的内容。 该网页是异步下载的。
使用RestClient
类创建一个其他客户端。
使用RestRequest
创建 GET 请求。
该请求使用ExecuteAsync()
方法异步执行。