NuGet 上可用 · MIT 许可证

优雅的 .NET 热榜爬虫
轻松抓取全网热搜

Aneiang.Pa 是一个极简、声明式的 .NET 爬虫库,支持 20 个平台。 一行代码抓数据,一份 YAML 扩平台,开箱即用。

20 支持平台
0.2MB 包大小
.NET Std 2.1 目标框架
MIT 开源许可
C#
using Aneiang.Pa;

// One line to fetch
var data = await Pa.Source("WeiBo").GetAsync();

foreach (var item in data.Data)
{
    Console.WriteLine("> " + item["title"]);
}

// Strongly typed
var news = await Pa.Source("WeiBo").GetAsync<NewsItem>();

public class NewsItem
{
    public string? Title { get; set; }
    public string? Url { get; set; }
}

为什么选择 Aneiang.Pa?

专为 .NET 开发者设计,让热榜数据抓取变得简单高效

20 个内置平台

覆盖微博、知乎、B站、抖音、百度、头条、GitHub 等主流平台,新增平台 0 行代码

极简 API

Pa.Source("WeiBo").GetAsync() 一行搞定,无需繁琐配置

声明式 Recipe

YAML / Builder DSL / 特性标注,新增平台无需编写 C# 代码

生产级管道

缓存 / 重试 / 熔断 / 限流 / 指标 / 追踪,默认开启

深度集成

原生支持 ASP.NET Core,app.MapPaApi() 一行起 REST API

跨平台兼容

.NET Standard 2.1 & .NET 8,Windows、Linux、macOS 全平台运行

异步流式

IAsyncEnumerable 支持,逐条产出,内存友好,适合大数据量场景

插件生态

自定义 Source / Parser / Pipeline,灵活扩展,满足定制需求

架构设计

分层管道架构,每一层都可替换、可扩展

01

Source 层

20+ 内置数据源,YAML/Builder 声明式定义,零代码扩展

02

Pipeline 层

缓存 → 重试 → 熔断 → 限流 → 指标,生产级中间件管道

03

Parser 层

HtmlContainer/HtmlItem/HtmlValue 特性标注,强类型映射

04

Output 层

Dictionary / 强类型 / IAsyncEnumerable,灵活输出

内置平台

开箱即用,持续扩展中

微博 微博 社交
知乎 知乎 社区
B站 B站 视频
抖音 抖音 视频
百度 百度 搜索
头条 头条 资讯
虎扑 虎扑 体育
腾讯 腾讯 资讯
掘金 掘金 技术
澎湃 澎湃 新闻
豆瓣 豆瓣 娱乐
凤凰 凤凰 新闻
CSDN CSDN 技术
博客园 博客园 技术
IT之家 IT之家 科技
36氪 36氪 科技
GitHub GitHub GitHub
GitHub Releases GitHub Releases GitHub
双色球 双色球 彩票
大乐透 大乐透 彩票
更多平台 持续扩展

想支持更多平台? 提交 Issue

在线体验

配合 Aneiang.Pa.News,感受实时热榜聚合的魅力

news.aneiang.com
打开

实时更新

每分钟自动刷新,数据一手掌握

20 个平台

一个 API 接口获取全网热点

评论互动

分享观点,参与讨论

快速开始

一行代码抓取全网热搜

Bash
# Install via dotnet CLI
dotnet add package Aneiang.Pa

# Or use NuGet Package Manager
Install-Package Aneiang.Pa

# Optional: Web API integration
dotnet add package Aneiang.Pa.AspNetCore
C#
using Aneiang.Pa;

// One line to fetch data
var data = await Pa.Source("WeiBo").GetAsync();

foreach (var item in data.Data)
{
    Console.WriteLine(item["title"]);
}
C#
// Strongly typed mapping
var repos = await Pa.Source("Github.Trending").GetAsync<Repo>();

public class Repo
{
    public string? Title { get; set; }
    public string? Url   { get; set; }
    public string? Lang  { get; set; }
    public int     Stars { get; set; }
}
C#
// Async streaming with IAsyncEnumerable
await foreach (var item in Pa.Source("WeiBo").StreamAsync())
{
    Console.WriteLine(item["title"]);
}
C#
// Per-call overrides
var fresh = await Pa.Source("WeiBo")
    .NoCache()                              // Bypass cache
    .NoRetry()                              // Skip retry
    .WithTimeout(TimeSpan.FromSeconds(10))  // Custom timeout
    .WithProxy("http://127.0.0.1:7890")    // Temporary proxy
    .GetAsync();
C#
using Aneiang.Pa.AspNetCore;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddPa();

var app = builder.Build();
app.MapPaApi();  // One line to REST API
app.Run();

// Exposes:
// GET /api/pa/sources           - List all sources
// GET /api/pa/source/{name}     - Fetch data
// GET /api/pa/health            - Health check

一行代码

无需配置,开箱即用

强类型支持

IDE 智能提示,编译时检查

生产级管道

缓存、重试、熔断默认开启

常见问题

关于 Aneiang.Pa 的疑问解答

Aneiang.Pa 是免费的吗?

是的,Aneiang.Pa 基于 MIT 许可证开源,可免费用于商业和个人项目。

支持 .NET Framework 吗?

目标框架为 .NET Standard 2.1 和 .NET 8,兼容 .NET Core 3.0+、.NET 5-8,不支持 .NET Framework。

如何添加自定义平台?

三种方式:1) YAML Recipe 文件声明式定义;2) Builder DSL 链式配置;3) 继承 Source 基类编写 C# 代码。推荐前两种,无需编译。

数据抓取频率有限制吗?

库本身不限制,但请遵守各平台的 robots.txt 和使用条款。内置限流管道可控制请求频率,避免被封禁。

支持代理和自定义 Header 吗?

支持。可通过 .WithProxy() / .WithHeader() 链式方法按请求覆盖,也可在全局配置中设置默认值。

如何参与贡献?

欢迎在 GitHub 提交 Issue 反馈问题或建议新平台,也欢迎提交 PR。新增平台只需一个 YAML 文件。

准备好开始了吗?

加入 Aneiang.Pa 社区,让 .NET 数据抓取更优雅