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 实现,专门用于从网页中提取正文内容。它能够智能识别并提取网页的正文内容,同时去除无关内容(如广告、导航栏、页脚等),保留正文和代码块。

安装

npm install readability

使用示例

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 库,提供了类似的功能。

安装

npm install newspaper

使用示例

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 可能更适合你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue框架学习

一、Vue3 基础 创建vue3工程 安装Node.js在你所要存放目录位置 cmd 终端运行 npm create vuelatest输入工程名字需要ts JSX 选No 是否配置路由 NO&#xff08;初步学习&#xff09; 是否配置管理 No 是否配置测试 No Testing Solution NO 是否选择ESLint语法检查先不选 选NO…

部署若依微服务遇到的坑

一、用Windows部署nacos 1、启动失败&#xff0c;因为nacos默认开启为器群模式。单体需要加上图下代码 2、nacos配置内置MySQL时需要执行config文件夹下的SQL文件 3、springboot启动报错 java.nio.charset.MalformedInputException: Input length 1或Input length 2-CSDN博…

RabbitMQ系列(三)基本概念之Consumer

在 RabbitMQ 中&#xff0c;Consumer&#xff08;消费者&#xff09; 是负责从队列&#xff08;Queue&#xff09;中获取并处理消息的客户端角色&#xff0c;其核心机制与功能如下&#xff1a; 一、Consumer 的定义与核心作用 消息处理终端 Consumer 通过订阅或拉取队列中的消…

Trae根据原型设计稿生成微信小程序密码输入框的踩坑记录

一、需求描述 最近经常使用Trae生成一些小组件和功能代码&#xff08;对Trae赶兴趣的可以看之前的文章《TraeAi上手体验》&#xff09;&#xff0c;刚好在用uniapp开发微信小程序时需要开发一个输入密码的弹框组件&#xff0c;于是想用Trae来实现。原型设计稿如下&#xff1a;…

SuperMap iClient3D for WebGL 影像数据可视范围控制

在共享同一影像底图的服务场景中&#xff0c;如何基于用户权限体系实现差异化的数据可视范围控制&#xff1f;SuperMap iClient3D for WebGL提供了自定义区域影像裁剪的方法。让我们一起看看吧&#xff01; 一、数据制作 对于上述视频中的地图制作&#xff0c;此处不做讲述&am…

STM32中使用PWM对舵机控制

目录 1、硬件JIE 2、PWM口配置 3、角度转换 4、main函数中应用 5、工程下载连接 1、硬件介绍 单片机&#xff1a;STM32F1 舵机&#xff1a;MG995 2、PWM口配置 20毫秒的PWM脉冲占空比&#xff0c;对舵机控制效果较好 计算的公式&#xff1a; PSC、ARR值的选取&#xf…

5、使用 pgAdmin4 图形化创建和管理 PostgreSQL 数据库

通过上几篇文章我们讲解了如何安装 PostgreSQL 数据库软件和 pgAdmin4 图形化管理工具。 今天我们继续学习如何通过 pgAdmin4 管理工具图形化创建和管理 PostgreSQL 数据库。 一、PostgreSQL的基本工作方式 在学习如何使用PostgreSQL创建数据库之前&#xff0c;我们需要了解一…

Protobuf原理与序列化

本文目录 1. Protobuf介绍2. Protobuf的优势3. 编写Protobuf头部全局定义消息结构具体定义字段类型定义标签号Base128编码 4. TLVProtobuf的TLV编码如何通过Varint表示300&#xff1f; 5. 编译Protobuf6. 构造消息对象 前言&#xff1a;之前写项目的时候只是简单用了下Protobuf…

DeepSeek:面向效率与垂直领域的下一代大语言模型技术解析

本文将深入剖析DeepSeek模型的核心算法架构&#xff0c;揭示其在神经网络技术上的突破性创新&#xff0c;并与主流大模型进行全方位技术对比。文章涵盖模型设计理念、训练范式优化、应用场景差异等关键维度&#xff0c;为读者呈现大语言模型领域的最新发展图景。 一、DeepSeek…

数据安全_笔记系列09_人工智能(AI)与机器学习(ML)在数据安全中的深度应用

数据安全_笔记系列09_人工智能&#xff08;AI&#xff09;与机器学习&#xff08;ML&#xff09;在数据安全中的深度应用 人工智能与机器学习技术通过自动化、智能化的数据分析&#xff0c;显著提升了数据分类、威胁检测的精度与效率&#xff0c;尤其在处理非结构化数据、复杂…

【Python 语法】Python 数据结构

线性结构&#xff08;Linear Structures&#xff09;1. 顺序存储列表&#xff08;List&#xff09;元组&#xff08;Tuple&#xff09;字符串&#xff08;String&#xff09; 2. 线性存储栈&#xff08;Stack&#xff09;队列&#xff08;Queue&#xff09;双端队列&#xff08…

docker本地镜像源搭建

最近Deepseek大火后&#xff0c;接到任务就是帮客户装Dify&#xff0c;每次都头大&#xff0c;因为docker源不能用&#xff0c;实在没办法&#xff0c;只好自己搭要给本地源。话不多说具体如下&#xff1a; 1、更改docker的配置文件&#xff0c;添加自己的私库地址&#xff0c…

Ae 效果详解:粒子运动场

Ae菜单&#xff1a;效果/模拟/粒子运动场 Simulation/Particle Playground 粒子运动场 Particle Playground效果可以用于创建和控制粒子系统&#xff0c;模拟各种自然现象&#xff0c;如烟雾、火焰、雨水或雪等。通过调整粒子的发射点、速度、方向和其他属性&#xff0c;可以精…

CSS 对齐:深入理解与技巧实践

CSS 对齐:深入理解与技巧实践 引言 在网页设计中,元素的对齐是至关重要的。一个页面中元素的对齐方式直接影响到页面的美观度和用户体验。CSS 提供了丰富的对齐属性,使得开发者可以轻松实现各种对齐效果。本文将深入探讨 CSS 对齐的原理、方法和技巧,帮助开发者更好地掌握…

汽车无钥匙进入一键启动操作正确步骤

汽车智能无钥匙进入和一键启动的技术在近年来比较成熟&#xff0c;不同车型的操作步骤可能略有不同&#xff0c;但基本的流程应该是通用的&#xff0c;不会因为时间变化而有大的改变。 移动管家汽车一键启动无钥匙进入系统通常是通过携带钥匙靠近车辆&#xff0c;然后触摸门把…

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说&#xff0c;APP更新功能再常见不过了&#xff0c;因为平台更新审核时间较长&am…

AI触手可及 | 基于函数计算玩转AI大模型

AI触手可及 | 基于函数计算玩转AI大模型 基于函数计算部署AI大模型的优势方案架构图像生成 - Stable Diffusion WebUI部署操作 释放资源部署总结体验反馈 在生成式AI技术加速迭代的浪潮下&#xff0c;百亿级参数的行业大模型正推动产业智能化范式转移。面对数字化转型竞赛&…

DDD该怎么去落地实现(4)多对多关系

多对多关系的设计实现 如题&#xff0c;DDD该如何落地呢&#xff1f;前面我通过三期的内容&#xff0c;讲解了DDD落地的关键在于“关系”&#xff0c;也就是通过前面我们对业务的理解先形成领域模型&#xff0c;然后将领域模型的原貌&#xff0c;形成程序代码中的服务、实体、…

【补阙拾遗】排序之冒泡、插入、选择排序

炉烟爇尽寒灰重&#xff0c;剔出真金一寸明 冒泡排序1. 轻量化情境导入 &#x1f30c;2. 边界明确的目标声明 &#x1f3af;3. 模块化知识呈现 &#x1f9e9;&#x1f4ca; 双循环结构对比表★★★⚠️ 代码关键点注释 4. 嵌入式应用示范 &#x1f6e0;️5. 敏捷化巩固反馈 ✅ …

前端面试题---小程序跟vue的声明周期的区别

1. 小程序生命周期 小程序的生命周期主要分为 页面生命周期 和 应用生命周期。每个页面和应用都有自己独立的生命周期函数。 应用生命周期 小程序的应用生命周期函数与全局应用相关&#xff0c;通常包括以下几个钩子&#xff1a; onLaunch(options)&#xff1a;应用初始化时触…