一个适用于 Node 和浏览器的轻量级 RSS 解析器。
Installation
npm install --save rss-parser
Usage
可以从 URL ( parser.parseURL
) 或 XML 字符串 ( parser.parseString
) 解析 RSS。
callbacks 和 Promises 均受支持。
NodeJS
NodeJS 中使用带有 async/await 的 Promises 的示例:
let Parser = require('rss-parser'); let parser = new Parser(); (async () => { let feed = await parser.parseURL('https://www.reddit.com/.rss'); console.log(feed.title); feed.items.forEach(item => { console.log(item.title + ':' + item.link) }); })();
TypeScript
使用 TypeScript 时,可以设置类型来控制自定义字段:
import Parser from 'rss-parser'; type CustomFeed = {foo: string}; type CustomItem = {bar: number}; const parser: Parser<CustomFeed, CustomItem> = new Parser({ customFields: { feed: ['foo', 'baz'], // ^ will error because `baz` is not a key of CustomFeed item: ['bar'] } }); (async () => { const parser = new Parser(); const feed = await parser.parseURL('https://www.reddit.com/.rss'); console.log(feed.title); // feed will have a `foo` property, type as a string feed.items.forEach(item => { console.log(item.title + ':' + item.link) // item will have a `bar` property type as a number }); })();
Web
官方建议使用 webpack之类的打包工具,也在
dist/
文件夹中提供了预构建的浏览器发行版。如果使用预构建的发行版,则需要一个 polyfill 来支持 Promise。
以下是浏览器中使用 callbacks 的示例:
<script src="/node_modules/rss-parser/dist/rss-parser.min.js"></script> <script> // Note: some RSS feeds can't be loaded in the browser due to CORS security. // To get around this, you can use a proxy. const CORS_PROXY = "https://cors-anywhere.herokuapp.com/" let parser = new RSSParser(); parser.parseURL(CORS_PROXY + 'https://www.reddit.com/.rss', function(err, feed) { if (err) throw err; console.log(feed.title); feed.items.forEach(function(entry) { console.log(entry.title + ':' + entry.link); }) }) </script>
评论