一行代码抓遍全网 20 个热榜!Aneiang.Pa 4.0 发布 — 极简 .NET 爬虫库

发布时间:2026/6/24 10:52:24
一行代码抓遍全网 20 个热榜!Aneiang.Pa 4.0 发布 — 极简 .NET 爬虫库 var data await Pa.Source(WeiBo).GetAsync();— 微博热搜到手。抓 20 个平台无需写代码新增平台只需写一份 YAML。本文带你看完 Aneiang.Pa 4.0 的所有亮点。引子你写过多少次重复的爬虫我做这件事是因为过去半年我至少写了 5 次抓某个热榜然后存数据库的代码。一次是给个人博客做今日热点侧边栏一次是给客户做内部数据看板一次是为了挖掘话题写公众号一次是测试 LLM 对中文热点的反应最后一次……我已经想不起来了反正又重写了一遍每次都长这样varclientnewHttpClient();client.DefaultRequestHeaders.UserAgent.ParseAdd(Mozilla/5.0...);varhtmlawaitclient.GetStringAsync(https://s.weibo.com/top/summary);vardocnewHtmlDocument();doc.LoadHtml(html);varnodesdoc.DocumentNode.SelectNodes(//tr);// ... 然后是 try/catch、重试、缓存、限流、日志...这件事不应该每次都重写。于是有了 Aneiang.Pa 4.0。一行起步usingAneiang.Pa;vardataawaitPa.Source(WeiBo).GetAsync();foreach(varitemindata.Data)Console.WriteLine(item[title]);完事。Pa.Source(name).GetAsync()内部已经处理了✅ HttpClient 创建和超时控制✅ UA 轮换✅ 3 次指数退避重试✅ 5 分钟内存缓存✅ 连续失败熔断 60 秒✅ 结构化日志✅ Prometheus 指标✅ OpenTelemetry 追踪全部默认启用零配置。强类型映射publicclassRepo{publicstring?Title{get;set;}publicstring?Url{get;set;}publicstring?Lang{get;set;}}varreposawaitPa.Source(Github.Trending).GetAsyncRepo();foreach(varrinrepos.Data)Console.WriteLine($[{r.Lang}]{r.Title});20 个内置平台分类平台新闻热榜微博、知乎、B站、百度、抖音、头条虎扑、腾讯、掘金、澎湃、豆瓣、凤凰网CSDN、博客园、IT之家、36氪GitHubGithub.Trending、Github.Releases彩票双色球、大乐透foreach(varrinPa.Sources())Console.WriteLine(${r.Category}/{r.Name}{r.DisplayName});输出[News] BaiDu 百度热榜 [News] Bilibili B 站热搜 [News] DouYin 抖音热搜 [News] Github.Releases GitHub Releases (dotnet/runtime) [News] Github.Trending GitHub Trending [News] WeiBo 微博热搜 [News] ZhiHu 知乎热榜 ... 共 20 个新增一个平台 一份 YAML想抓 Hacker News写一份hackernews.yamlname:HackerNewscategory:Newsdisplay_name:Hacker News 头条fetch:url:https://news.ycombinator.com/parse:type:htmlcontainer:tr.athingfields:title:{selector:span.titleline a,trim:true}url:{selector:span.titleline a,attr:href}rank:{selector:span.rank}Pa.Configure(cc.UseRecipesFolder(./recipes));varhnawaitPa.Source(HackerNews).GetAsync();0 行 C# 代码。无需新建项目。无需重新编译框架。四种 Recipe 来源各有适用方式适用场景内置 YAML框架自带开箱即用外部 YAML 文件夹配置外置运维可改社区共享Builder DSLC# 内联动态构造、运行时定义特性标注强类型、IDE 友好Builder DSL 示例Pa.Define(MyAPI,bb.Get(https://api.example.com/items?page{pageNo}).Header(Authorization,Bearer xxx).ParseJson(pp.Items($.data).Field(id,id).Field(title,title)));vardataawaitPa.Source(MyAPI).WithPaging(1,30).GetAsync();特性标注示例[Recipe(MyTrending,CategoryTech)][Get(https://github.com/trending)][Container(article.Box-row)]publicclassRepo{[Selector(h2 a)]publicstring?Title{get;set;}[Selector(h2 a,Attrhref,Basehttps://github.com)]publicstring?Url{get;set;}}Pa.DiscoverFromLoadedAssemblies();vardataawaitPa.Source(MyTrending).GetAsyncRepo();ASP.NET Core 集成 — 5 行变 REST APIusingAneiang.Pa.AspNetCore;varbuilderWebApplication.CreateBuilder(args);builder.Services.AddPa();varappbuilder.Build();app.MapPaApi();app.Run();自动暴露端点GET /api/pa/sources — 列出所有源 GET /api/pa/source/WeiBo — 抓微博热搜 GET /api/pa/source/BaiDu — 抓百度热榜 GET /api/pa/source/Lottery.SSQ — 抓双色球 GET /api/pa/health — 健康检查打包成 Docker 镜像一台服务器就能给你的所有项目提供热榜 API。难搞的抖音怎么办抖音热搜接口需要先访问login.douyin.com拿 Cookie否则直接 403。Aneiang.Pa内置DouYinCookieMiddleware自动处理vardataawaitPa.Source(DouYin).GetAsync();实测输出[DouYinCookie] 已获取 Cookie114 字节10 分钟内复用 成功共 48 条热搜: 1. 拿捏夏日高能运动穿搭 11951312 2. 父亲的爱藏在买与不买里 11907634 3. 假日经济活力迸发 11989625 ...类似的特殊站点小红书、微信公众号等未来都会有对应的内置中间件。性能与可靠性超时30 秒硬超时可配置重试3 次指数退避最长 14 秒500ms → 2s → 8s熔断连续 5 次失败开启 60 秒熔断缓存默认 5 分钟内存缓存限流滑动窗口令牌桶按需启用代理池轮询/随机 健康跟踪 失败自动禁用安装# 主包核心 20 内置 Recipedotnetaddpackage Aneiang.Pa# Web API 集成可选dotnetaddpackage Aneiang.Pa.AspNetCore# HTTP 客户端 SDK可选dotnetaddpackage Aneiang.Pa.Client单包 18 MB 左右无重型依赖。实测截图 Aneiang.Pa 4.0 — 全能力 Demo ── ① 所有已注册 Recipe ── [News] WeiBo / BaiDu / Bilibili / ZhiHu / DouYin / TouTiao ... [News] Github.Trending / Github.Releases [Lottery] Lottery.SSQ / Lottery.DLT 共 20 个 ── ② 基础调用 — 百度热榜 ── 成功 50 条: - 2比2战平乌拉圭佛得角再造冷门 - 注意防范暴雨、强对流天气 - 洲际导弹不试则已 一试惊人 ── ③ 强类型映射 — Github.Releases ── [v9.0.17] .NET 9.0.17 by by-msft 2026-06-09 [v8.0.28] .NET 8.0.28 by by-msft 2026-06-09 [v10.0.9] .NET 10.0.9 by by-msft 2026-06-09 ── ⑦ 缓存中间件验证 ── 第二次调用 BaiDu命中缓存: 0ms适合谁✅ 想给自己的项目接热点 Feed 的独立开发者✅ 需要给客户做数据看板舆情大屏的外包工作室✅ 想给 LLM 喂中文实时热点的 AI 应用✅ 对 .NET 爬虫库现状不满想找一个现代化替代品的人开源地址Gitee: https://gitee.com/aneiangsoft/Aneiang.PaGitHub: https://github.com/AneiangSoft/Aneiang.Pa欢迎 Star、Issue、PR。新增平台不需要写 C# 代码—— 提交一份 YAML 文件就能让全世界的 .NET 用户用上你贡献的平台。vardataawaitPa.Source(YourPlatform).GetAsync();期待你的贡献。Aneiang.Pa 4.0 — 让 .NET 爬虫像 LINQ 一样自然。