节点js puppeteer元数据

Lau*_*Kay 3 meta-tags node.js puppeteer

我是Puppeteer的新手,我正在尝试使用Node.JS和Puppeteer从网站中提取元数据.我似乎无法正确使用语法.下面的代码使用两种不同的方法以及段落标记中的文本来完美地提取Title标记.如何提取名称为"description"的元数据的内容文本?

meta name ="description"content ="Stack Overflow是最大的,等等"

我会非常感谢任何建议!我似乎无法在任何地方找到任何这样的例子(5小时的搜索和代码黑客攻击).我的示例代码:

const puppeteer = require('puppeteer');

async function main() {
  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();
  await page.goto('https://stackoverflow.com/', {waitUntil: 'networkidle2'});

  const pageTitle1 = await page.evaluate(() => document.querySelector('title').textContent);
  const pageTitle2 = await page.title();
  const innerText = await page.evaluate(() => document.querySelector('p').innerText);
  console.log(pageTitle1);
  console.log(pageTitle2);
  console.log(innerText);
};  

main();
Run Code Online (Sandbox Code Playgroud)

Rau*_*eda 9

您需要CSS选择器MDN CSS选择器的深入教程.

我强烈建议的是直接在控制台上测试您的选择器,您将应用自动化,这将节省数小时的运行 - 停止您的系统.试试这个:

document.querySelectorAll("head > meta[name='description']")[0].content;
Run Code Online (Sandbox Code Playgroud)

现在对于puppeteer,你需要复制那个选择器和过去的puppeteer函数,我也喜欢这个符号:

await page.$eval("head > meta[name='description']", element => element.content);
Run Code Online (Sandbox Code Playgroud)

任何其他问题或问题只是评论.