我是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();
答案 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);