【问题标题】:How Do I Strip All Script Elements From HTML Strings Using Node.js?如何使用 Node.js 从 HTML 字符串中剥离所有脚本元素?
【发布时间】:2021-06-17 09:41:02
【问题描述】:

我正在使用 Node.js 和 Puppeteer 构建一个爬虫。在这种情况下,Puppeteer 获取页面的主要内容,将其保存为字符串,Rss Parser 将其转换为 RSS 提要,创建 XML 文件,并将该文件保存为包含抓取内容的物理文件。问题是,如果抓取的内容包含 Adsense 代码等脚本元素,它也会被抓取。我需要一个简单的正则表达式,它可以删除任何脚本元素及其所有属性以及介于两者之间的所有内容。

我一直在寻找一个简单的例子,可以让我做类似的事情:

var content = scrapedcontent;
content = content.replace(myregex, '');

我找不到适合我的示例。到目前为止,我发现的最接近的东西建议使用 jQuery。我不能使用 jQuery,因为这是一个不包含 jQuery 库的 Node.js 项目,我不想添加 jQuery 只是为了从字符串中去除脚本。

另外,请不要用关于正则表达式及其字符含义的讲座来回应。对我来说,这就是全部。我只需要找到说“这是正则表达式,这就是它的作用,复制并粘贴你就完成了”的东西。

【问题讨论】:

  • 回复:你的最后一段,上帝保佑我们要求你学习任何东西或做任何工作......
  • 我不明白你为什么不想使用 jQuery。当您操作 DOM 时,它非常适合这样的事情,并且当它是解决您的问题的明智解决方案时,您对 我不想添加 jQuery 的推理很有趣。无论如何,使用正则表达式处理 HTML 通常被认为是bad idea。我发现了一些东西that might be of use to you, though.
  • 您应该知道<script> 并不是将javascript 添加到html 的唯一方法。
  • 任何可以用 jQuery 编写的东西也可以不用 jQuery 来编写。 jQuery 示例的链接是什么?
  • 这似乎适用于开始标签以及除了结束标签之外的后续内容 /

标签: javascript node.js regex puppeteer


【解决方案1】:

使用https://www.npmjs.com/package/cherio

专为服务器设计的核心 jQuery 的实现。

以 jQuery 样式获取元素并删除它们

const cheerio = require('cherio')
const $ = cheerio.load(scrapedcontent);
$('.abc').remove(); // your selector
const newHtml = $.html();

【讨论】:

  • 我的问题特别指出“这是一个不包含 jQuery 库的 Node.js 项目,我不想添加 jQuery 只是为了从字符串中剥离脚本。”然而,我得到的第一个答案正是我要求任何回答的人不要做的事情。我不是在寻找一种导入 jQuery 的方法,只是为了去除脚本标签。我正在寻找一个适用于常规 javascript 的正则表达式。
  • @PostAlmostAnything - 这个答案中没有 jQuery。这是 Cheerio 库,它拥有自己的类似 jQuery 的功能,专为服务器在解析的 HTML 内容上使用而设计。
猜你喜欢
  • 2012-09-30
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
相关资源
最近更新 更多