# @extractus/feed-extractor 中文文档

规范地址：https://npmcn.com/package/%40extractus/feed-extractor/

版本：8\.0\.3
npm 元数据更新时间：2026-08-06T13:07:52.286Z
中文译文更新时间：2026-11-14T06:14:32.670Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40extractus/feed-extractor
原文对照：https://npmcn.com/package/%40extractus/feed-extractor/?lang=original
项目主页：https://github.com/extractus/feed-extractor#readme
源码仓库：https://github.com/extractus/feed-extractor

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：168 kB，105 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2022-11-29T06:16:50.484Z
- 最新版本发布：2026-08-06T13:07:52.085Z
- 近 30 天下载量：85978（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：39（近 12 个月 4 个）

## 中文简介

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

## 安装

```sh
npm install @extractus/feed-extractor
```

也可以使用：`pnpm add @extractus/feed-extractor`、`yarn add @extractus/feed-extractor`、`bun add @extractus/feed-extractor`

## README

# 种子提取器

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

[![JSR](https://jsr.io/badges/@extractus/feed-extractor)](https://jsr.io/@extractus/feed-extractor) [![npm version](https://badge.fury.io/js/@extractus%2Ffeed-extractor.svg)](https://badge.fury.io/js/@extractus%2Ffeed-extractor) ![CI test](https://github.com/extractus/feed-extractor/workflows/ci-test/badge.svg)

## 安装

### 德诺

```bash
deno add jsr:@extractus/feed-extractor
```

### 节点.js / Bun

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

或者从 npm 安装 :

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

## 使用量

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

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

## APIs 密码

-   [`extract()`](https://npmcn.com/package/%40extractus/feed-extractor/#readme-extract)
-   [`extractFromJson()`](https://npmcn.com/package/%40extractus/feed-extractor/#readme-extractfromjson)
-   [`extractFromXml()`](https://npmcn.com/package/%40extractus/feed-extractor/#readme-extractfromxml)

* * *

### `extract()`

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

#### 语法

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

示例

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

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

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

```ts
{
  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

-   [RSS 种子](https://www.rssboard.org/rss-specification)
    -   [RDF 种子](https://web.resource.org/rss/1.0/spec)
-   [ATOM 种子](https://datatracker.ietf.org/doc/html/rfc5023)
-   [JSON 饲料](https://www.jsonfeed.org/version/1.1/)

##### `options` _选项_

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

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

例如:

```ts
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`。 。 。 .

**德诺** (带有代理) :

```ts
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使用代理) :

```ts
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);
```

**阿宝** (带有代理) :

```ts
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);
```

**自定义信头**数字 :

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

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

**请求超时**数字 :

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

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

* * *

### `extractFromJson()`

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

#### 语法

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

示例

```ts
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` _选项_

见 [选项](https://npmcn.com/package/%40extractus/feed-extractor/#readme-options-optional) 见上文.

* * *

### `extractFromXml()`

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

#### 语法

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

示例

```ts
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` _选项_

见 [选项](https://npmcn.com/package/%40extractus/feed-extractor/#readme-options-optional) 见上文.

* * *

## 发展

```bash
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
```

## 许可证

《麻省理工学院许可证》

## 支持项目

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

-   来帮助更多的人发现它.
-   给我买杯咖啡: [https://paypal.me/ndaidong (英语)](https://paypal.me/ndaidong)
-   订阅 [种子阅读器服务](https://rapidapi.com/pwshub-pwshub-default/api/feed-reader1/) 在快速API上.

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

* * *

## 常见问题

### @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 和提交记录判断。

