2014-01-07 2 views
1
var request = require('request'); 
var cheerio = require('cheerio'); 
var urls = []; 


request('http://www.reddit.com', function(err, resp,body){ 
    if(err && resp.statusCode == 200){ 
     var $ = cheerio.load(body); 
     $('a.title','#siteTable').each(function(){  //where they are located 
      var url = this.attr('href'); 
      urls.push(url); 
     }); 
     console.log(urls); // print them 
    } 
}); 

система: MacNode.js не разрешит мне console.log?

Примечание: Я установил request и cheerio.

После того, как я скомпилировал эту программу без ошибок. Основная цель этой программы - запросить сайт, а затем найти каждый «href» на странице html и его данных. Проблема заключается в том, что данные не выводятся. Может ли кто-нибудь объяснить это мне. заранее спасибо.

------ Неожиданный выход ---------

C:\Users\*****\Documents>node test.js Нет данных печатается с веб-сайта, в HTML форме.

C:\Users\******\Documents>

------ Ожидаемое Ouput -------------------------

C:\Users\*****\Documents>node test.js

Web Site data printed.

C:\Users\******\Documents>

+0

Попробовать console.log за пределами вашей, если заявление. – Chris

+7

, если у вас есть ошибка, и если у вас есть ответ 200 OK, который вы хотите зарегистрировать. Не случится, если Чак Норрис хочет этого. – gustavohenke

+0

@gustavohenke спасибо, я вижу, что я сделал не так. – ruthless

ответ

3

Как кто-то любезно указует в комментариях, подозреваемая линия:

if(err && resp.statusCode == 200) 

Ошибка, вероятно, не определена или равна нулю, поэтому это значение никогда не будет равно true. Вы можете изменить его на:

if (!err && resp.statusCode == 200) 

Но я бы, вероятно, рекомендуем вам разделить логику здесь, а также использовать === вместо ==

if (err) { 
    // do something to handle the err 
} 

if (resp.statusCode === 200) { 
    // the rest of your logic. 
} 
Смежные вопросы