简而言之:在 C# 中进行网页抓取,请从 .NET 10 入手:用内置的 HttpClient 下载网页,用 AngleSharp 通过 CSS 选择器解析 HTML。如果您更喜欢 XPath 或需要维护旧代码,请选择 HtmlAgilityPack;当页面由 JavaScript 构建时,再加入 Playwright for .NET。本指南构建一个爬虫,涵盖礼貌重试、有界爬取、CSV 和 JSON 导出以及离线测试。
C# 中的网页抓取始于一个常见的问题:你需要的数据位于某个网页上,而你希望在不离开 .NET 环境的情况下,将其转换为类型化的 C# 对象。在 .NET 10 上,该平台已经提供了你所需的大部分功能,而少数缺失的部分则可以通过成熟的 NuGet 包来补充。
本指南将逐步构建一个小型爬虫。你将使用 AngleSharp(或 HtmlAgilityPack,如果你更喜欢 XPath)解析页面,通过一个 HttpClient 以正确方式重试 429 响应,在受限并发条件下爬取分页列表,并导出 CSV 和 JSON 格式。随后,你将提取由 JavaScript 生成的数据,使用 Playwright for .NET 渲染页面,将受阻页面交由爬虫 API 处理(无需修改解析器),并离线测试所有功能。 示例中使用了两个专为数据抓取而建的公开练习站点:Books to Scrape 以及 /js/ Quotes to Scrape 的某个版本。
快速入门——安装 .NET 10 SDK,并使用dotnet new console. - 添加解析器:dotnet add package AngleSharp. - 使用HttpClient.GetStringAsync(),使用QuerySelectorAll(),并使用TextContent和GetAttribute()。 - 当 JavaScript 构建页面时,使用 Playwright for .NET。




