我正在尝试使用 NodeJS、puppeteer 和 cheerio 收集 github 贡献者的见解。
const cheerio = require('cheerio');
const puppeteer = require('puppeteer');
const url = 'https://github.com/grey-software/grey.software/graphs/contributors';
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.waitForSelector('#contributors', {
visible: true,
})
await page.goto(url);
const pageContent = await page.content()
const $ = cheerio.load(pageContent);
$('.contrib-person').each(function (i, elem) {
console.log(elem)
});
await browser.close();
})();
当我运行上面的代码时出现以下错误
UnhandledPromiseRejectionWarning: TimeoutError: waiting for selector "#contributors"failed: timeout 30000ms exceeded
#contributors div 应该会在 30 秒内加载,但我总是会超时。 注意:page.waitForNavigation() 给出同样的超时错误
最佳答案
您的问题是您正在等待选择器存在...在您首先访问该网站之前。在使用 page.goto()
page.waitForSelector()
关于javascript - 无法从 github insights 页面抓取贡献者 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63334103/