@extractus/feed-extractor

中文文档
8.0.3发布于 2026/08/06MITTypeScriptESM + CJS近 30 天下载 8.6万

阅读和规范RSS/ATOM/JSON的反馈数据

中文使用文档
文档目录11 节
  1. 安装
  2. 德诺
  3. 节点.js / Bun
  4. 使用量
  5. APIs 密码
  6. extract()
  7. extractFromJson()
  8. extractFromXml()
  9. 发展
  10. 许可证
  11. 支持项目

种子提取器

读取 RSS/ATOM/JSON 的输入数据.

JSR npm version CI test

安装

德诺

deno add jsr:@extractus/feed-extractor

节点.js / Bun

pnpm add jsr:@extractus/feed-extractor
# or
npx jsr add @extractus/feed-extractor
# or
bunx jsr add @extractus/feed-extractor

或者从 npm 安装 :

npm install @extractus/feed-extractor
# or
bun add @extractus/feed-extractor

使用量

import { extract } from "@extractus/feed-extractor";

const data = await extract("https://news.google.com/atom");
console.log(data);

APIs 密码


extract()

从给定的RSS/ATOM/JSON源装入并取出饲料数据.

语法

extract(url: string): Promise<FeedData>
extract(url: string, options?: ParserOptions): Promise<FeedData>
extract(url: string, options?: ParserOptions, fetcher?: Fetcher): Promise<FeedData>

示例

import { extract } from "@extractus/feed-extractor";

const result = await extract("https://news.google.com/atom");
console.log(result);

没有任何选择,结果应具有以下结构:

{
  title: string;
  link: string;
  description: string;
  generator: string;
  language: string;
  published: string; // ISO datetime
  entries: Array<{
    id: string;
    title: string;
    link: string;
    description: string;
    published: string; // ISO datetime
  }>;
}

参数

url 所需经费

有效种子源的 URL .

饲料内容必须易于取用并符合下列标准之一: 1

options 选项

具有下列全部或数个属性的对象:

  • normalization:布尔、正常的种子数据或保持原始。 默认 true。 。 。 .
  • useISODateFormat: boolean,将日期时间转换为ISO格式. 默认 true。 。 。 .
  • descriptionMaxLen:数字,用于截取描述. 默认 250 字符键。 设定为 0 =没有截断.
  • xmlParserOptions:对象,选项传递给 XML 解析器.
  • getExtraFeedFields:函数,从种子数据中获取更多字段.
  • getExtraEntryFields:函数,从种子条目数据中获取更多字段.
  • baseUrl: URL 字符串,用于解决 feed 内容中的链接.

例如:

import { extract } from "@extractus/feed-extractor";

await extract("https://news.google.com/atom", {
  useISODateFormat: false,
});

await extract("https://news.google.com/rss", {
  useISODateFormat: false,
  getExtraFeedFields: (feedData) => {
    return {
      subtitle: feedData.subtitle || "",
    };
  },
  getExtraEntryFields: (feedEntry) => {
    const { enclosure, category } = feedEntry;
    return {
      enclosure: {
        url: enclosure["@_url"],
        type: enclosure["@_type"],
        length: enclosure["@_length"],
      },
    };
  },
});
fetcher 选项

带有签名的自定义获取函数 (url: string) => Promise<Response>。 。 。 . 使用此功能来自定义 HTTP 行为: 代理,信头, TLS, 认证, 超时等.

默认为 globalThis.fetch。 。 。 .

德诺 (带有代理) :

import { extract } from "@extractus/feed-extractor";

const client = Deno.createHttpClient({
  proxy: { url: "http://proxy.example.com:8080" },
});
const myFetcher = (url: string) => fetch(url, { client });

const result = await extract("https://news.google.com/rss", {}, myFetcher);

节点.js (通过undici使用代理) :

import { extract } from "@extractus/feed-extractor";
import { fetch, ProxyAgent } from "undici";

const dispatcher = new ProxyAgent("http://proxy.example.com:8080");
const myFetcher = (url: string) => fetch(url, { dispatcher });

const result = await extract("https://news.google.com/rss", {}, myFetcher);

阿宝 (带有代理) :

import { extract } from "@extractus/feed-extractor";

const myFetcher = (url: string) =>
  fetch(url, {
    proxy: "http://proxy.example.com:8080",
  });

const result = await extract("https://news.google.com/rss", {}, myFetcher);

自定义信头数字 :

const myFetcher = (url: string) =>
  fetch(url, {
    headers: {
      "user-agent": "MyBot/1.0",
      authorization: "Bearer token123",
    },
  });

const result = await extract(url, {}, myFetcher);

请求超时数字 :

const myFetcher = (url: string) =>
  fetch(url, {
    signal: AbortSignal.timeout(5000),
  });

const result = await extract(url, {}, myFetcher);

extractFromJson()

从 JSON 对象或字符串中提取种子数据 .

语法

extractFromJson(json: Record<string, unknown> | string): FeedData
extractFromJson(json: Record<string, unknown> | string, options?: ParserOptions): FeedData

示例

import { extractFromJson } from "@extractus/feed-extractor";

const url = "https://www.jsonfeed.org/feed.json";
const res = await fetch(url);
const json = await res.json();

const feed = extractFromJson(json);
console.log(feed);

参数

json 所需经费

JSON 对象或字符串来自 JSON Feed 资源.

options 选项

见 选项 见上文.


extractFromXml()

从 XML 字符串中提取种子数据 .

语法

extractFromXml(xml: string): FeedData
extractFromXml(xml: string, options?: ParserOptions): FeedData

示例

import { extractFromXml } from "@extractus/feed-extractor";

const url = "https://news.google.com/atom";
const res = await fetch(url);
const xml = await res.text();

const feed = extractFromXml(xml);
console.log(feed);

参数

xml 所需经费

来自 RSS/ATOM 种子资源的 XML 字符串 .

options 选项

见 选项 见上文.


发展

git clone https://github.com/extractus/feed-extractor.git
cd feed-extractor

# Run tests
deno test --allow-all

# Lint
deno lint

# Build npm package
deno task build

许可证

《麻省理工学院许可证》

支持项目

这个项目是我空余时间维持的 如果你认为这有帮助, 有一些简单的方式支持它的持续发展:

每一点支持都有助于保持该项目的积极维持。 谢谢


版本与发布记录

@extractus/feed-extractor 共发布 39 个版本,首次发布于 2022/11/29;过去 12 个月发布了 4 个版本。

版本发布日期距今
8.0.3latest2026/08/063 个月前
8.0.22026/08/063 个月前
7.2.12026/05/036 个月前
7.2.02026/05/036 个月前
7.1.72025/09/041.2 年前
7.1.62025/05/141.5 年前

关于 @extractus/feed-extractor 的常见问题

@extractus/feed-extractor 是什么?

阅读和规范RSS/ATOM/JSON的反馈数据

如何安装 @extractus/feed-extractor?

在项目目录运行 npm install @extractus/feed-extractor,或使用 pnpm add / yarn add / bun add。

@extractus/feed-extractor 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@extractus/feed-extractor 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@extractus/feed-extractor 可以商用吗?

@extractus/feed-extractor 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@extractus/feed-extractor 的下载量有多少?

根据 npm 官方下载统计,@extractus/feed-extractor 在 2026/10/14 – 2026/11/12 这 30 天内被下载 85,978 次,日均约 2,866 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@extractus/feed-extractor 还在维护吗?

最新版本 8.0.3 发布于 2026/08/06(3 个月前);至今共发布 39 个版本,其中过去 12 个月发布了 4 个;首次发布于 2022/11/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。