在 C# 里抓取 Google,通常从 HttpClient + HtmlAgilityPack 开始,最后以一张代理账单和一个无头浏览器收场。这里是便宜的做法:一次请求,就把 Google 结果以结构化 JSON 返回——不用代理,不用解析。
为什么 .NET 里自己动手抓取代价高昂
- IP 封锁——Google 会迅速封锁数据中心 IP;你不得不租用轮换的住宅代理。
- CAPTCHA——请求量一上来就会触发,破解要花钱。
- 无头浏览器——JS 渲染的结果逼你用 Playwright/Selenium,高负载下很吃资源。
- 选择器腐化——Google 的 DOM 一变,你的 HtmlAgilityPack XPath 就失效。
便宜的做法:一次请求
只用 HttpClient 和 System.Text.Json——无需额外包:
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;
var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-API-Key",
Environment.GetEnvironmentVariable("SERP_CHEAP_API_KEY"));
var res = await http.PostAsJsonAsync("https://api.serp.cheap/v1/search",
new { q = "best crm software", gl = "us" });
var doc = await res.Content.ReadFromJsonAsync<JsonElement>();
foreach (var r in doc.GetProperty("organic").EnumerateArray())
{
Console.WriteLine($"{r.GetProperty("position")}. {r.GetProperty("title")}");
Console.WriteLine($" {r.GetProperty("link")}");
}
没有代理,没有浏览器,也没有需要维护的解析器。
或者使用官方 SDK
dotnet add package SerpCheap
var client = new SerpCheap.Client(
Environment.GetEnvironmentVariable("SERP_CHEAP_API_KEY"));
var res = await client.SearchAsync(new SearchParams { Q = "best crm software", Gl = "us" });
Console.WriteLine(res.Organic[0].Title);
在开发 Web 应用?dotnet add package SerpCheap.AspNetCore 会把客户端注册到依赖注入(DI),让你直接注入到控制器中。
价格如何
| 每次查询价格 | |
|---|---|
| 实时结果 | $0.0006 |
| 缓存结果 | $0.0003 |
| 注册赠送 | 100 次搜索 |
按量付费,$0.75/千次起,积分有效期 12 个月——比单是住宅代理带宽还便宜。参见最便宜的 SERP API 对比。
你会用到的参数
gl——结果所属国家。见分国家的本地 SEO。hl——界面语言。page——从 1 开始计数;见分页。tbs——用于获取最新结果的时间过滤器。
下一步
试试 serp.cheap
复制代码片段,填入你的密钥,就能从 C# 抓取 Google 了。注册即送 100 次免费搜索——无需信用卡;之后按量付费,$0.75/千次起,积分有效期 12 个月。
- 获取你的免费 API 密钥 →
- 更想用信用卡付款?serp.cheap 也上架了 RapidAPI(约 $0.90/千次)和 Apify(约 $1.50/千次)。