Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t从github insights页面刮取贡献者div_Javascript_Node.js_Web Scraping_Puppeteer_Cheerio - Fatal编程技术网

Javascript Can';t从github insights页面刮取贡献者div

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

我正在尝试使用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 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”})