节点js puppeteer元数据

时间:2018-02-21 07:31:52

标签: node.js meta-tags puppeteer

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

元名="描述" content =" Stack Overflow是最大的等等#34;

我会非常感谢任何建议!我似乎无法在任何地方找到任何这样的例子(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();

2 个答案:

答案 0 :(得分:8)

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

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

document.querySelectorAll("head > meta[name='description']")[0].content;

现在对于木偶操作者来说,你需要复制那个选择器以及过去的木偶操作,我还喜欢这个符号:

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

任何其他问题或问题只需评论。

答案 1 :(得分:0)

对于在 Puppeteer 中努力获取 OG 标签的任何人,这里是解决方案。

let dom2 = await page.evaluate(() => {
    return document.head.querySelector('meta[property="og:description"]').getAttribute("content");
});
console.log(dom2);