我正在使用puppeteer来获取给定网页的字体列表。
尝试以下代码段来获取给定页面的所有字体。
const selector = 'html';
const getFontProperty = async (page) => {
const font = await page.evaluate((selector) => {
let elements = Array.from(document.querySelectorAll(selector));
console.log(elements)
let links = elements.map(element => {
console.log(element)
console.log(getComputedStyle(element).font)
});
}, selector);
return font;
}
但是,elements
的定义不确定。
[引用链接:puppeteer page.evaluate querySelectorAll return empty objects
答案 0 :(得分:0)
发生这种情况是因为您实际上没有返回字体定义,而是用console.log记录它们。如果您不使用箭头函数的简短形式,则需要显式返回一个值:
let links = elements.map(element => {
console.log(element)
return getComputedStyle(element).font
});
否则,您可以编写:
let links = elems.map(element => getComputedStyle(element).font);
更新:您还必须返回从page.evaluate
中查找的数据:
const font = await page.evaluate(selector => {
let elements = Array.from(document.querySelectorAll(selector));
let links = elems.map(element => getComputedStyle(element).font);
return links; // <-- return data from page.evaluate
}, selector);