Javascript Can';t从github insights页面刮取贡献者div
我正在尝试使用NodeJS、木偶演员和cheerio来获取github贡献者的见解Javascript Can';t从github insights页面刮取贡献者div,javascript,node.js,web-scraping,puppeteer,cheerio,Javascript,Node.js,Web Scraping,Puppeteer,Cheerio,我正在尝试使用NodeJS、木偶演员和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 puppete
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();
})();
当我运行上面的代码时,出现以下错误
未经处理的PromisejectionWarning:TimeoutError:等待选择器“#参与者”失败:超过超时30000ms
#contributors div应该在30秒内加载,但我总是得到这个超时。
注意:page.waitForNavigation()给出了相同的超时错误您的问题是您正在等待选择器存在。。。在你进入网站之前。使用
page.waitForSelector()
在使用page.goto()
之后,我实际上已经尝试了实现该方法,但是贡献部分似乎没有呈现出来。虽然我没有收到上面的拒绝警告,但是scraper无法检测class.contrib person的元素,因为组件没有呈现。因此,for循环不会执行,也没有输出。add visible to true则作为第二个参数waitForSelector()的第二个参数已可见:true。这就是你指的吗?哦,等等,是的,nvm。您可以执行page.goto(url,{waitUntil:“domcontentloaded”})