Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 在给定request.continue()的循环行为的情况下,如何将每个网络请求存储到数组中?_Javascript_Google Chrome_Google Chrome Headless_Puppeteer - Fatal编程技术网

Javascript 在给定request.continue()的循环行为的情况下,如何将每个网络请求存储到数组中?

Javascript 在给定request.continue()的循环行为的情况下,如何将每个网络请求存储到数组中?,javascript,google-chrome,google-chrome-headless,puppeteer,Javascript,Google Chrome,Google Chrome Headless,Puppeteer,我试图在访问页面时获取所有网络请求,并将它们存储到数组中 我的代码如下所示: await page.setRequestInterceptionEnabled(true); page.on('request', request => { if(request.url) { var networkRequests = request.url; var networkArray = []; for (var i =

我试图在访问页面时获取所有网络请求,并将它们存储到数组中

我的代码如下所示:

  await page.setRequestInterceptionEnabled(true);
  page.on('request', request => {
      if(request.url) {
          var networkRequests = request.url;
          var networkArray = [];
          for (var i = 0; i < networkRequests; i++) {
              networkArray.push(networkRequests[i]);
          }
          console.log(networkArray);
          console.log(typeof networkArray);
          request.continue();
      } else {
          request.abort();
      }

  });
  await page.goto('http://www.example.com', {waitUntil: 'networkidle'});
wait page.setRequestInterceptionEnabled(true);
第页('request',request=>{
if(request.url){
var networkRequests=request.url;
var networkArray=[];
对于(var i=0;i
我发现问题在于
请求。continue()
。它为每个获取的请求创建几个迭代,对于每个迭代,它显示该请求并将其作为字符串返回。 这意味着我最终得到了几个字符串


问题是我无法将所有这些字符串插入到一个数组中,因此我可以在最近使用它们。我尝试了几个for循环,但没有成功。

同时找到了一个快速修复方法:

const puppeteer = require('puppeteer');

function extractRequests(url) {
    return new Promise((resolve, reject) => {
        (async() => {
            const browser = await puppeteer.launch();
            const page = await browser.newPage();
            await page.setRequestInterceptionEnabled(true);
            let result = [];
            page.on('request', request => {
                if (request.url) {
                    var networkRequests = request.url;
                    result.push(networkRequests);
                    request.continue();
                } else {
                    request.abort();
                }

            });
            page.goto(url, {
                     waitUntil: 'networkidle'
                })
                .then( _=> setTimeout( _=> resolve(result), 1000));
        })();
    });
}

extractRequests('http://example.com').then(requests => {
    console.log(requests.filter(x => x.includes('event-name') && x.includes('other-event-name')));
    process.exit(0);
});

同时找到了一个快速解决方案:

const puppeteer = require('puppeteer');

function extractRequests(url) {
    return new Promise((resolve, reject) => {
        (async() => {
            const browser = await puppeteer.launch();
            const page = await browser.newPage();
            await page.setRequestInterceptionEnabled(true);
            let result = [];
            page.on('request', request => {
                if (request.url) {
                    var networkRequests = request.url;
                    result.push(networkRequests);
                    request.continue();
                } else {
                    request.abort();
                }

            });
            page.goto(url, {
                     waitUntil: 'networkidle'
                })
                .then( _=> setTimeout( _=> resolve(result), 1000));
        })();
    });
}

extractRequests('http://example.com').then(requests => {
    console.log(requests.filter(x => x.includes('event-name') && x.includes('other-event-name')));
    process.exit(0);
});