【问题标题】:node js puppeteer metadata节点 js puppeteer 元数据
【发布时间】:2018-07-31 16:54:56
【问题描述】:

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

meta name="description" content="堆栈溢出最大等"

如果有任何建议,我将不胜感激!我似乎在任何地方都找不到任何这样的例子(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();

【问题讨论】:

    标签: node.js meta-tags puppeteer


    【解决方案1】:

    如果你想避开$eval,你可以这样做:

    const descriptionTag = await page.$('meta[name="description"]');
    const description = await descriptionTag?.getAttribute('content');
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        你需要一个深入的 CSS 选择器教程MDN CSS Selectors

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

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

        现在对于 puppeteer,您需要复制该选择器并在 puppeteer 函数上过去,我也更喜欢这种表示法:

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

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

        【讨论】:

        • 应该是element.content 而不是element.textContent :)
        猜你喜欢
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 2019-02-15
        • 1970-01-01
        • 1970-01-01
        • 2022-10-30
        • 2014-12-06
        • 2020-06-15
        相关资源
        最近更新 更多