Javascript 无法读取属性';家长';未定义节点的类型-Node.js

Javascript 无法读取属性';家长';未定义节点的类型-Node.js,javascript,node.js,cheerio,superagent,Javascript,Node.js,Cheerio,Superagent,我试图使用superagent和cheerio从kijiji抓取数据进行学习,但我遇到了一个错误“无法读取未定义的属性‘parent’”。(我试过craigslist,很好)。它发生在我得到正确结果“object”之后。看来cheerio有点不对劲。有人知道这件事吗?提前感谢你的帮助 [ERROR] 17:30:24 TypeError TypeError: Cannot read property 'parent' of undefined at Function.exports.up

我试图使用superagent和cheerio从kijiji抓取数据进行学习,但我遇到了一个错误“无法读取未定义的属性‘parent’”。(我试过craigslist,很好)。它发生在我得到正确结果“object”之后。看来cheerio有点不对劲。有人知道这件事吗?提前感谢你的帮助

[ERROR] 17:30:24 TypeError
TypeError: Cannot read property 'parent' of undefined
    at Function.exports.update (C:\Users\zhi_xie\nodejs\neomovie\node_modules\ch
eerio\lib\parse.js:55:25)
    at module.exports (C:\Users\zhi_xie\nodejs\neomovie\node_modules\cheerio\lib
\parse.js:17:11)
    at Function.exports.load (C:\Users\zhi_xie\nodejs\neomovie\node_modules\chee
rio\lib\static.js:19:14)
    at C:\Users\zhi_xie\nodejs\neomovie\routes\crawlerusers.js:35:27
    at Request.callback (C:\Users\zhi_xie\nodejs\neomovie\node_modules\superagen
t\lib\node\index.js:746:30)
    at Request.<anonymous> (C:\Users\zhi_xie\nodejs\neomovie\node_modules\supera
gent\lib\node\index.js:135:10)
    at Request.emit (events.js:95:17)
    at ClientRequest.<anonymous> (C:\Users\zhi_xie\nodejs\neomovie\node_modules\
superagent\lib\node\index.js:921:12)
    at ClientRequest.emit (events.js:95:17)
    at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1692:21)
[ERROR]17:30:24 TypeError
TypeError:无法读取未定义的属性“parent”
在Function.exports.update(C:\Users\zhi\u xie\nodejs\neomovie\node\u modules\ch
Jerio\lib\parse.js:55:25)
在module.exports(C:\Users\zhi\u xie\nodejs\neomovie\node\u modules\cheerio\lib
\parse.js:17:11)
在Function.exports.load(C:\Users\zhi\u xie\nodejs\neomovie\node\u modules\chee
rio\lib\static.js:19:14)
在C:\Users\zhi_xie\nodejs\neomvie\routes\crawlerus.js:35:27
at Request.callback(C:\Users\zhi\u xie\nodejs\neomvie\node\u modules\superagen
t\lib\node\index.js:746:30)
应要求。(C:\Users\zhi\u xie\nodejs\neomovie\node\u modules\supera
gent\lib\node\index.js:135:10)
at Request.emit(events.js:95:17)
在ClientRequest。(C:\Users\zhi\u xie\nodejs\neomvie\node\u模块\
superagent\lib\node\index.js:921:12)
在ClientRequest.emit(events.js:95:17)
在HTTPParser.parserOnIncomingClient[作为onIncoming](http.js:1692:21)
代码如下:

  var superagent = require('superagent');
  var cheerio = require('cheerio');
  var url = require('url');
  var kijijiUrl = 'http://www.kijiji.ca/b-immobilier/ville-de-montreal/c34l1700281?ad=wanted';

  superagent.get(kijijiUrl).end(function (err, res) {
    if (err) {
      return console.error(err);
    }
    var topicUrls = [];
    var $ = cheerio.load(res.text);
    // get all links in that page
    $('div.container-results').children('table').each(function (idx, element) {
      var $element = $(element);
      var href = url.resolve(kijijiUrl, $element.attr('data-vip-url'));
      topicUrls.push(href);
    });

    for(i = 0; i<topicUrls.length; i++){
      superagent.get(topicUrls[i])
        .end(function (err, sres) {
          //normal err handler
          if (err) {
            return next(err);
          }
          var $ = cheerio.load(sres.text);
          var object = {};
          $('table.ad-attributes').find('tr').not('.divider').each(function(i, element){
            var titles = $(element).children('th').text().trim();
            var values = $(element).children('td').text().trim();          
            object[titles] = values;
          });
          console.log(object);               
      });        
    }
  })  
var superagent=require('superagent');
var cheerio=需要('cheerio');
var url=require('url');
var Kijijuurl=http://www.kijiji.ca/b-immobilier/ville-de-montreal/c34l1700281?ad=wanted';
superagent.get(kijijuurl.end)(函数(err,res){
如果(错误){
返回控制台。错误(err);
}
var-topicUrls=[];
var$=cheerio.load(res.text);
//获取该页面中的所有链接
$('div.container-results')。子项('table')。每个(函数(idx,元素){
变量$element=$(element);
var href=url.resolve(kijijuurl,$element.attr('data-vip-url');
topicurl.push(href);
});

对于(i=0;i,正如chrki已经说过的,
cheerio.load()
使用空值(如null或空字符串)调用。在调用
.load()
之前,请检查该值是否包含某些内容:


我收到的错误消息与

$ = cheerio.load(response.Body);
应该是

$ = cheerio.load(response.body);

因此cheerio无法加载。

我搜索了这个错误消息,我的错误是使用了没有参数的
cheerio.load()
。在您的情况下,
res.text
可能未定义,从错误消息中看不太明显。
$ = cheerio.load(response.body);