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
}
});
系统:Mac
注意:我已安装request
和cheerio
。
编译完程序后,没有错误。该程序的主要目的是请求站点,然后在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 :(得分:3)
正如有人在评论中指出的那样,可疑线是:
if(err && resp.statusCode == 200)
错误可能是未定义的或null,因此,如果永远不会计算为true。您可以将其更改为:
if (!err && resp.statusCode == 200)
但我可能会建议你在这里拆分逻辑,并使用===而不是==
if (err) {
// do something to handle the err
}
if (resp.statusCode === 200) {
// the rest of your logic.
}