我一直在关注如何在Node JS中进行一些网页抓取的一系列教程
(我是一个完整的菜鸟,所以对任何问题的任何见解,无论多么基本,都有帮助)
我一直试图找到一种方法来保存我的阵列'网址'到一个文本文件,但遇到了几个问题 - 这是异步的,因为链接收集需要时间,我无法真正掌握回调如何在Node中工作。
这是我到目前为止所拥有的:
var request = require('request');
var cheerio = require('cheerio');
var links = [];
request('http://www.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);
});
console.log(links);
}
});
我在考虑简单地将整个'部分放在一起。在超时,它将给它足够的时间来编译链接列表,但我想看看更干净,更正确的方法是什么。
有人能告诉我如何使用回调,这样我可以设置一个打印功能来保存输出吗?
答案 0 :(得分:0)
除了一个错误外,一切看起来都不错。您没有声明名为urls
的数组,但您正在推送它。只需将urls.push(url);
更改为links.push(url);
即可
var request = require('request');
var cheerio = require('cheerio');
var links = [];
request('http://www.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');
links.push(url);
});
console.log(links);
}
});