无法读取未定义的属性“ getProperty”是我得到的错误。
const puppeteer = require('puppeteer');
async function scrapeUdemy(url) {
try {
const browser = await puppeteer.launch({headless: false, slowmo: 250});
const page = await browser.newPage()
await page.goto(url)
const [el] = await page.$x('//*[@id="udemy"]/div[1]/div[4]/div/div/div[2]/div/div/div[1]/a/div[1]/div[1]');
const txt = await el.getProperty('textContent');
const rawTxt = await src.jsonValue();
console.log({srcTxt});
browser.close();
}
catch(err) {
console.log(err.message);
}
}
scrapeUdemy('https://www.udemy.com/user/eren-cem-salta/')
我尝试使用其他版本,但不起作用。它也不能与catch块一起使用。
答案 0 :(得分:0)
您要获取的元素在页面启动后 中已加载AJAX,您必须等待它出现在DOM中:
await page.waitForSelector('[data-purpose="course-card-container"] div.udlite-heading-sm');
为什么不使用相同的选择器来获得所有卡:
const titles = await page.evaluate(() => {
const nodes = document.querySelectorAll(
'[data-purpose="course-card-container"] div.udlite-heading-sm'
);
return [...nodes].map((node) => node.textContent);
})