Readability.js 与 Newspaper提取网页内容和元数据

在当今信息爆炸的时代,网页内容的提取和处理变得尤为重要。无论是从新闻网站、博客还是教程网站中提取内容,都需要一个高效、准确的工具来帮助我们去除无关信息,提取出有价值的正文内容。这不仅能够提高我们的工作效率,还能让我们更好地专注于内容本身。

为什么选择 Readability.js 和 Newspaper?

Readability.js 和 Newspaper 是两个非常流行的 Node.js 库,它们能够帮助我们从网页中提取正文内容,同时去除无关的 HTML 标签。Readability.js 基于 Mozilla 的 Readability 算法,专注于提取正文内容,而 Newspaper 则提供了更全面的功能,包括提取元数据和图片。

Readability.js 和 Newspaper 的详细分析

1. Readability.js

介绍

Readability.js 是一个基于 Mozilla 的 Readability 算法的 JavaScript 实现,专门用于从网页中提取正文内容。它能够智能识别并提取网页的正文内容,同时去除无关内容(如广告、导航栏、页脚等),保留正文和代码块。

安装

bash 复制代码
npm install readability

使用示例

javascript 复制代码
const Readability = require('readability');
const fetch = require('node-fetch');
const { JSDOM } = require('jsdom');

async function extractContent(url) {
    try {
        const response = await fetch(url);
        const html = await response.text();
        const dom = new JSDOM(html);
        const article = new Readability(dom.window.document).parse();
        console.log(article.content); // 提取的正文内容
    } catch (error) {
        console.error('Error extracting content:', error);
    }
}

extractContent('https://example.com/article');

优点

  • 高精度提取:基于成熟的 Mozilla Readability 算法,提取效果出色。
  • 保留代码块 :默认保留 <pre><code> 标签及其内容。
  • 无需手动配置:完全自动化,无需编写正则表达式。
  • 支持 Node.js:可以直接在 Node.js 环境中使用。

适用场景

  • 适合从教程网站(含代码)和学习文章网站(无代码)中提取正文内容。
  • 需要在 Node.js 环境中运行。
2. Newspaper(Node.js 版本)

介绍

Newspaper 是一个强大的 Node.js 库,用于从网页中提取正文内容、标题、作者、发布日期等信息。它基于 Python 版本的 Newspaper 库,提供了类似的功能。

安装

bash 复制代码
npm install newspaper

使用示例

javascript 复制代码
const newspaper = require('newspaper');

async function extractContent(url) {
    try {
        const result = await newspaper(url);
        console.log(result.text); // 提取的正文内容
        console.log(result.title); // 文章标题
        console.log(result.authors); // 作者
        console.log(result.publishDate); // 发布日期
    } catch (error) {
        console.error('Error extracting content:', error);
    }
}

extractContent('https://example.com/article');

优点

  • 高精度提取:提取正文内容并去除无关标签。
  • 支持元数据提取:可以提取文章的标题、作者、发布日期等信息。
  • 灵活性:提供一些配置选项,可以自定义提取逻辑。
  • 支持 Node.js:可以直接在 Node.js 环境中使用。

适用场景

  • 适合从新闻网站、博客或学习文章网站中提取内容。
  • 需要在 Node.js 环境中运行。

对比分析

工具 自动去除HTML标签 保留代码块 无需手动配置 支持元数据提取 适用场景
Readability.js ★★★★ ★★★★ ★★★★ ★★★ 适合从教程网站(含代码)和学习文章网站(无代码)中提取正文内容。
Newspaper ★★★★ ★★★ ★★★ ★★★★ 适合从新闻网站、博客或学习文章网站中提取内容。

总结

Readability.js 是一个专注于提取网页正文内容的工具,特别适合需要保留代码块的场景。Newspaper 提供了更全面的功能,包括提取元数据,适合需要提取文章标题、作者、发布日期等信息的场景。

选择哪个工具取决于你的具体需求。如果你只需要提取正文内容并保留代码块,Readability.js 是一个很好的选择。如果你还需要提取元数据,Newspaper 可能更适合你。

相关推荐
Mr -老鬼5 分钟前
Rust适合干什么?为什么需要Rust?
开发语言·后端·rust
予枫的编程笔记8 分钟前
【Java集合】深入浅出 Java HashMap:从链表到红黑树的“进化”之路
java·开发语言·数据结构·人工智能·链表·哈希算法
ohoy14 分钟前
RedisTemplate 使用之Set
java·开发语言·redis
mjhcsp14 分钟前
C++ 后缀数组(SA):原理、实现与应用全解析
java·开发语言·c++·后缀数组sa
hui函数15 分钟前
如何解决 pip install 编译报错 ‘cl.exe’ not found(缺少 VS C++ 工具集)问题
开发语言·c++·pip
云栖梦泽24 分钟前
易语言Windows桌面端「本地AI知识管理+办公文件批量自动化处理」双核心系统
开发语言
r_oo_ki_e_34 分钟前
java22--常用类
java·开发语言
AI小怪兽37 分钟前
轻量、实时、高精度!MIE-YOLO:面向精准农业的多尺度杂草检测新框架 | MDPI AgriEngineering 2026
开发语言·人工智能·深度学习·yolo·无人机
码农小韩37 分钟前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
消失的旧时光-194341 分钟前
C++ 命名空间 namespace 讲透:从 std:: 到工程实践
开发语言·c++