news 2026/6/24 10:52:05

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一行代码抓遍全网 20 个热榜!Aneiang.Pa 4.0 发布 — 极简 .NET 爬虫库

var data = await Pa.Source("WeiBo").GetAsync();— 微博热搜到手。
抓 20 个平台无需写代码,新增平台只需写一份 YAML。本文带你看完 Aneiang.Pa 4.0 的所有亮点。


引子:你写过多少次"重复的爬虫"?

我做这件事是因为过去半年,我至少写了 5 次"抓某个热榜然后存数据库"的代码

  • 一次是给个人博客做"今日热点"侧边栏
  • 一次是给客户做内部数据看板
  • 一次是为了挖掘话题写公众号
  • 一次是测试 LLM 对中文热点的反应
  • 最后一次……我已经想不起来了,反正又重写了一遍

每次都长这样:

varclient=newHttpClient();client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0...");varhtml=awaitclient.GetStringAsync("https://s.weibo.com/top/summary");vardoc=newHtmlDocument();doc.LoadHtml(html);varnodes=doc.DocumentNode.SelectNodes("//tr");// ... 然后是 try/catch、重试、缓存、限流、日志...

这件事不应该每次都重写。

于是有了 Aneiang.Pa 4.0。


一行起步

usingAneiang.Pa;vardata=awaitPa.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;}}varrepos=awaitPa.Source("Github.Trending").GetAsync<Repo>();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.yaml

name:HackerNewscategory:Newsdisplay_name:Hacker News 头条fetch:url:https://news.ycombinator.com/parse:type:htmlcontainer:"tr.athing"fields:title:{selector:"span.titleline a",trim:true}url:{selector:"span.titleline a",attr:href}rank:{selector:"span.rank"}
Pa.Configure(c=>c.UseRecipesFolder("./recipes"));varhn=awaitPa.Source("HackerNews").GetAsync();

0 行 C# 代码。无需新建项目。无需重新编译框架。


四种 Recipe 来源,各有适用

方式适用场景
内置 YAML框架自带,开箱即用
外部 YAML 文件夹配置外置,运维可改,社区共享
Builder DSL(C# 内联)动态构造、运行时定义
特性标注强类型、IDE 友好

Builder DSL 示例

Pa.Define("MyAPI",b=>b.Get("https://api.example.com/items?page={pageNo}").Header("Authorization","Bearer xxx").ParseJson(p=>p.Items("$.data").Field("id","id").Field("title","title")));vardata=awaitPa.Source("MyAPI").WithPaging(1,30).GetAsync();

特性标注示例

[Recipe("MyTrending",Category="Tech")][Get("https://github.com/trending")][Container("article.Box-row")]publicclassRepo{[Selector("h2 a")]publicstring?Title{get;set;}[Selector("h2 a",Attr="href",Base="https://github.com")]publicstring?Url{get;set;}}Pa.DiscoverFromLoadedAssemblies();vardata=awaitPa.Source("MyTrending").GetAsync<Repo>();

ASP.NET Core 集成 — 5 行变 REST API

usingAneiang.Pa.AspNetCore;varbuilder=WebApplication.CreateBuilder(args);builder.Services.AddPa();varapp=builder.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,自动处理:

vardata=awaitPa.Source("DouYin").GetAsync();

实测输出:

[DouYinCookie] 已获取 Cookie(114 字节,10 分钟内复用) 成功!共 48 条热搜: 1. 拿捏夏日高能运动穿搭 11951312 2. 父亲的爱藏在买与不买里 11907634 3. 假日经济活力迸发 11989625 ...

类似的特殊站点(小红书、微信公众号等)未来都会有对应的内置中间件。


性能与可靠性

  • 超时:30 秒硬超时(可配置)
  • 重试:3 次指数退避,最长 14 秒(500ms → 2s → 8s)
  • 熔断:连续 5 次失败开启 60 秒熔断
  • 缓存:默认 5 分钟内存缓存
  • 限流:滑动窗口令牌桶(按需启用)
  • 代理池:轮询/随机 + 健康跟踪 + 失败自动禁用

安装

# 主包(核心 + 20 内置 Recipe)dotnetaddpackage 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.Pa

GitHub: https://github.com/AneiangSoft/Aneiang.Pa

欢迎 Star、Issue、PR

新增平台不需要写 C# 代码—— 提交一份 YAML 文件就能让全世界的 .NET 用户用上你贡献的平台。

vardata=awaitPa.Source("YourPlatform").GetAsync();

期待你的贡献。


Aneiang.Pa 4.0 — 让 .NET 爬虫像 LINQ 一样自然。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 10:42:32

一鍵多平台直播:obs-multi-rtmp免費插件終極指南

一鍵多平台直播&#xff1a;obs-multi-rtmp免費插件終極指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否渴望在YouTube、Twitch、Bilibili等多個平台同時直播&#xff0c;卻不…

作者头像 李华
网站建设 2026/6/24 10:40:07

3分钟搞定Mac微信防撤回:让重要消息不再消失的终极方案

3分钟搞定Mac微信防撤回&#xff1a;让重要消息不再消失的终极方案 【免费下载链接】WeChatIntercept 微信防撤回插件&#xff0c;一键安装&#xff0c;MAC可用&#xff0c;支持最新v4.1.10微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 还在为错过…

作者头像 李华
网站建设 2026/6/24 10:35:00

计算机毕业设计之个人信息管理系统

“互联网”的战略实施后&#xff0c;很多行业的信息化水平都有了很大的提升。但是目前很多公司在日常的账户收入、支出仍在通过人工管理的方式进行&#xff0c;需要在每个工作岗位投入大量的人力进行很多重复性工作&#xff0c;这样就浪费了许多的人力物力&#xff0c;工作效率…

作者头像 李华
网站建设 2026/6/24 10:34:00

如何为老旧Mac安装最新macOS:OpenCore Legacy Patcher终极指南

如何为老旧Mac安装最新macOS&#xff1a;OpenCore Legacy Patcher终极指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款革命…

作者头像 李华
网站建设 2026/6/24 10:29:18

PCIE Transaction Layer(事务)详解 一

一、事务层的高层关键特性 (High-Level Key Aspects)事务层的四大核心机制&#xff0c;它们是整个PCIe协议高效、可靠运行的基础。流水线式完全拆分事务协议 (A pipelined full Split-Transaction protocol)含义&#xff1a;这是PCIe性能的关键。它将一次事务&#xff08;如读取…

作者头像 李华
网站建设 2026/6/24 10:27:22

58000 Star 的视觉 AI 框架,一行代码搞定目标检测

文章目录58000 Star 的视觉 AI 框架&#xff0c;一行代码搞定目标检测它到底能干什么上手有多快模型选择训练和部署生态和集成值不值得用58000 Star 的视觉 AI 框架&#xff0c;一行代码搞定目标检测 YOLO 这个名字做计算机视觉的应该都听过&#xff0c;从最初论文发布到现在&…

作者头像 李华