【发布时间】:2021-12-02 00:51:06
【问题描述】:
我正在开发一个简单的scraper,但我无法解决这个问题。 每次我运行它时它都会返回一个空数组,但是当我在控制台上运行 querySelectorAll 时,该站点确实包含元素并返回一个 NodeList。
有什么我可能会忽略的吗?我已经尝试过 waitForSelector 来等待它,但没有运气,它只是给出了一个超时。
谢谢
const scraper = async () => {
try {
const browser = await puppeteer.launch({ args: ['--no-sandbox', "--disabled-setupid-sandbox"]});
const page = await browser.newPage();
await page.goto('https://randomtodolistgenerator.herokuapp.com/library');
const elements = await page.$$(".card-body");
console.log(elements);
await browser.close();
} catch (error) {
console.log(error)
}
}
【问题讨论】:
-
页面已经加载,并不意味着内容就在那里。如果你
curl那个 URL,你会得到一个页面,里面基本上什么都没有,所以你必须让 Puppeteer 等待你的内容甚至由main.304f6764.chunk.js和1.304f6764.chunk.js的任何捆绑包生成。 -
“为什么没有元素”问题的答案总是你必须等待它或者它在 iframe 中。
标签: node.js web-scraping puppeteer