Im создает образец скребка для тестирования, чтобы узнать о Cheerio и jQuery.Cheerio Node.JS External Title link issue
Я почесываю голову по второму запросу после того, как получил группу URL-адресов и сохранил их, - это сделать еще один запрос на загрузку этих URL-адресов и вывести заголовок из заголовка этой страницы.
Мой код выглядит следующим образом.
var request = require('request'),
cheerio = require('cheerio');
urls = [];
titles = [];
request('http://reddit.com', function(err, resp, body){
if(!err && resp.statusCode == 200){
var $ = cheerio.load(body);
$('a.title', '#siteTable').each(function(){
var url = $(this).attr('href');
urls.push(url);
});
//issue is here
for(var i = 0; i < urls.length; i++){
request(urls[i], function(err, resp, body){
var $ = cheerio.load(body);
var title = $("title").text();
console.log(title);
});
}
}
});
Похоже, что я получаю свойство неопределенного места при присвоении названия со страницы.
Должен отметить, что я новичок в jQuery, поэтому этот код, вероятно, выглядит смешно (я предполагаю).
Ошибки я получаю от консоли,
TypeError: Cannot read property 'parent' of undefined
at Function.exports.update (/home/pi/node_modules/cheerio/lib/parse.js:55:25)
at module.exports (/home/pi/node_modules/cheerio/lib/parse.js:17:11)
at Function.exports.load (/home/pi/node_modules/cheerio/lib/static.js:19:14)
at Request._callback (/home/pi/scraper.js:16:22)
at self.callback (/home/pi/node_modules/request/request.js:187:22)
at Request.emit (events.js:95:17)
at Request.init (/home/pi/node_modules/request/request.js:275:17)
at new Request (/home/pi/node_modules/request/request.js:129:8)
at request (/home/pi/node_modules/request/index.js:55:10)
at Request._callback (/home/pi/scraper.js:15:6)
Я понимаю, что эта ошибка означает, что у меня есть переменный не определен, и я пытаюсь сделать дополнительный атрибут как .someThing но точки ошибок в функция обратного вызова во втором запросе.
Любые советы о том, как я мог это исправить?
Обратите внимание, что многие из ваших переменных являются глобальными, поскольку вы использовали точки с запятой вместо запятой после определения второй переменной. – adeneo