【问题标题】:How to fix ' variable in loof with innerText'如何修复'带有innerText的循环变量'
【发布时间】:2019-07-21 01:13:19
【问题描述】:

此 //2 代码中的错误。 评估失败:TypeError:无法读取未定义的属性“innerText”..

我想爬取网站 .tbl_column > table > tbody > tr > td[1,2,3,4,5,6...] in loof 如何解决..?

操作系统是mac

安装的傀儡师

//1 - was worked well 
for(var i= 0; i< 12; i++){
      var value = await page.evaluate(() => document.querySelectorAll('.tbl_column > table > tbody > tr > td')[2].innerText); 
      console.log(value);
    }



//2 -  this is error syntax "i"
for(var i= 0; i< 12; i++){
      var value = await page.evaluate(() => document.querySelectorAll('.tbl_column > table > tbody > tr > td')[i].innerText); 
      console.log(value);
    }

【问题讨论】:

  • 尝试使用let i= 0
  • for(let i= 0; i document.querySelectorAll('.tbl_column > table > tbody > tr > td' )[i].innerText);控制台.log(值); } // 不工作.. 同样的错误

标签: javascript node.js puppeteer


【解决方案1】:

当您的 document.querySelectorAll() 结果对象中的项目少于 12 个时,将发生该错误。

无论如何,您的 for 循环对我来说真的没有意义。您应该从document.querySelectorAll() 获取结果,获取您获得的结果的长度并使用基于该长度值的for 循环。

这似乎也是您可以通过在对其执行 [i].innerText 之前执行值的 console.log() 来进行一些基本调试的事情。

我不太了解 puppeteer,但你可以试试这个:

let value = await page.evaluate(() => {
    let items = document.querySelectorAll('.tbl_column > table > tbody > tr > td');
    let results = [];
    for (let i = 0; i < items.length; i++) {
        let data = items[i].innerText;
        console.log(data);
        results.push(data);
    }
    return results;
});
console.log(value);

【讨论】:

  • 12 是测试值。实际上, var courseCounts = (await page.$$('.left_line.ta_c.numbering')).length; document.querySelectorAll('.tbl_column > table > tbody > tr > td' )[i].innerText);控制台.log(值); }>> 发生同样的错误..
  • @Shin6 - 12 是错误的值。当 querySelectorAll() 结果中没有 12 个项目时,您会收到该错误。那是您描述的错误以及代码的显示方式。我正在解释您为什么会收到该错误。
  • @Shin6 - 我无法在 cmets 中读取您的多行代码。不知道你在说什么。
  • 感谢您的代码。但它也没有奏效。错误代码失败:ReferenceError:数据未定义
  • @Shin6 - 我建议的代码中有一个错字,我现在已经修复(一个额外的括号并返回错误的变量)。请尝试当前版本的代码。
猜你喜欢
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
相关资源
最近更新 更多