Javascript 从页面上的列表中查找单词

Javascript 从页面上的列表中查找单词,javascript,dom,puppeteer,Javascript,Dom,Puppeteer,我目前正在编写一个脚本,它可以检测坏单词,并在单词出现时发出警报 我使用的是Puppeter,它可以访问chrome浏览器,并且可以在终端上运行命令。我在控制台中尝试了很多东西,例如“includes”,但这会产生一个未定义的错误 我还尝试在Stackoverflow上添加答案代码 但这不适用于木偶演员,它只适用于粘贴到终端。此系统只能搜索1个单词。我的想法是制作一个数组,其中包含所有必须过滤的单词 到目前为止,我已经写了以下内容。据我所知,要运行代码,我需要将代码放入evaluate()的{}

我目前正在编写一个脚本,它可以检测坏单词,并在单词出现时发出警报

我使用的是Puppeter,它可以访问chrome浏览器,并且可以在终端上运行命令。我在控制台中尝试了很多东西,例如“includes”,但这会产生一个未定义的错误

我还尝试在Stackoverflow上添加答案代码

但这不适用于木偶演员,它只适用于粘贴到终端。此系统只能搜索1个单词。我的想法是制作一个数组,其中包含所有必须过滤的单词

到目前为止,我已经写了以下内容。据我所知,要运行代码,我需要将代码放入evaluate()的{}中

这会产生如下错误:

19-07-23T23:38:23.763Z
(node:24944) UnhandledPromiseRejectionWarning: Error: Evaluation failed: ReferenceError: page is not defined
我想问你的问题是,我如何使用这些工具创建一个坏词过滤器,或者在哪里可以学到更多关于构建这个过滤器所需的技能


谢谢

如果您只想查找所有的坏单词(例如,您有一个坏单词数组),并且您想检查页面内容是否包含任何坏单词,您可以执行以下操作:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  const id = new Date();
  console.log(id)
  await page.goto('https://www.mediamarkt.nl/nl/search.html?query=iphone&searchProfile=onlineshop&channel=mmnlnl', {waitUntil: 'networkidle2'});
  const blackList = ['home', 'mediamarkt', 'sorteren', 'maakt'];

  const pageContent = await page.$eval('body', el => el.textContent);
  const result = pageContent.split(/\s+/).filter(text => blackList.includes(text.toLowerCase()));
  await browser.close();
  console.log("Here is the array of the found words", result);
})();

它将返回页面上找到的所有坏单词的数组。希望我能正确回答您的问题。

如果您只想查找所有坏单词(例如,您有一个坏单词数组),并且希望检查页面内容是否包含任何坏单词,您可以执行以下操作:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  const id = new Date();
  console.log(id)
  await page.goto('https://www.mediamarkt.nl/nl/search.html?query=iphone&searchProfile=onlineshop&channel=mmnlnl', {waitUntil: 'networkidle2'});
  const blackList = ['home', 'mediamarkt', 'sorteren', 'maakt'];

  const pageContent = await page.$eval('body', el => el.textContent);
  const result = pageContent.split(/\s+/).filter(text => blackList.includes(text.toLowerCase()));
  await browser.close();
  console.log("Here is the array of the found words", result);
})();

它将返回页面上找到的所有坏单词的数组。希望我能正确回答您的问题。

如果您想找到不好的短语(包括空格),可以尝试:

const found = await page.evaluate(() => window.find(elementsToSearchFor));


如果要查找不好的短语(包括空格),可以尝试:

const found = await page.evaluate(() => window.find(elementsToSearchFor));


尝试从
const page=await browser.newPage()中删除
await
。错误在于未正确定义
页面
。这就是你想要关注的地方。我还建议你检查Marktplaats的API。这可能是获得结果的更快/更有效的方法:尝试从
const page=await browser.newPage()中删除
await
。错误在于未正确定义
页面
。这就是你想要关注的地方。我还建议你检查Marktplaats的API。这可能是一种更快/更有效的方式来获得你的结果:你好,叶文,非常感谢。这正是我想要的。我将用你的代码来教自己在我的情况下如何以及为什么这样做,并在我将来可能会有的进一步想法中实现这一点。酷,很高兴帮助你!)你好,叶文,非常感谢。这正是我想要的。我将用你的代码来教自己在我的情况下如何以及为什么这样做,并在我将来可能会有的进一步想法中实现这一点。酷,很高兴帮助你!)