2014-01-07 32 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?

注:我已經安裝了requestcheerio

我編譯完這個程序後,沒有錯誤。這個程序的主要目的是請求一個網站,然後在html頁面及其數據中找到每個「href」。問題是,沒有數據輸出。有人可以向我解釋。提前致謝。

------意外的輸出---------

C:\Users\*****\Documents>node test.js 沒有數據從網站印刷,在HTML形式。

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

------預期的輸出繼電器-------------------------

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

Web Site data printed.

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

+0

嘗試之外CONSOLE.LOG您若聲明。 – Chris

+7

如果您有錯誤,並且您有200 OK響應,您想記錄。除非Chuck Norris想要那樣,否則不會發生。 – gustavohenke

+0

@gustavohenke謝謝你,我看到我做錯了什麼。 – ruthless

回答

3

正如有人好心的意見指出,犯罪嫌疑人行:

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

err可能是未定義的或爲null,所以如果從未計算結果爲true。你可以將其更改爲:

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

但我可能會建議你在這裏拆分邏輯,並且還使用===而不是==

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

if (resp.statusCode === 200) { 
    // the rest of your logic. 
} 
相關問題