javascript - 如何使用 Puppeteer 将变量定义为抓取的元素
问题描述
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: null
})
const page = await browser.newPage()
await page.goto('https://www.supremenewyork.com/shop/sweatshirts/ftq968f24/lhrblx1z5')
var productName = await page.evaluate(() => {
document.querySelector('div[id="details"] > p[itemprop="model"]').innerText;
})
console.log(productName);
})()
当我运行应该获取至尊项目名称的代码时,它应该在控制台中记录它时显示未定义。
解决方案
您既没有从 中返回任何东西,page.evaluate
也没有设置 的值productName
。尝试这样的事情,而不是$eval
用来返回innerText
匹配元素的:
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto(
"https://www.supremenewyork.com/shop/sweatshirts/ftq968f24/lhrblx1z5"
);
const productName = await page.$eval(
'div[id="details"] > p[itemprop="model"]',
(el) => el.innerText
);
console.log(productName);
})();
如果您更喜欢使用evaluate
它,它看起来像:
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto(
"https://www.supremenewyork.com/shop/sweatshirts/ftq968f24/lhrblx1z5"
);
const productName = await page.evaluate(() => {
// notice the return
return document.querySelector('div[id="details"] > p[itemprop="model"]').innerText;
});
console.log(productName);
})();
如果innerText
不返回任何内容,您可能需要使用类似textContent
.
希望这会有所帮助!
推荐阅读
- django - django 3 - 如何将文章模型外键设置为登录用户 ID?
- titanium - 使用 node-gyp 的 Titanium 应用程序编译错误
- abap - 在 AT SELECTION-SCREEN 中设置依赖列表框的值
- python - instagram basic display api Exchange Code for Token 返回 400 OAuthException Invalid platform app
- angular - Angular中数据的异步操作
- javascript - 使用接口会导致重复但使用抽象类会导致无关属性
- python - 跟踪链接时出现 Scrapy 错误:AttributeError:“HtmlResponse”对象没有属性“follow_all”
- python - Python中的两个主体内重复测量方差分析
- python - IF 和 ELIF 函数和 FOR 函数
- python - 按最大值百分比生成的随机数