我正在Node中构建一个scraper,它使用request和cheerio加载页面并解析它们。
重要的是我只在请求后放置一个回调,并且Cheerio已经完成加载页面。我正在尝试使用async
extension,但我不完全确定将回调放在哪里。
request(url, function (err, resp, body) {
var $;
if (err) {
console.log("Error!: " + err + " using " + url);
} else {
async.series([
function (callback) {
$ = cheerio.load(body);
callback();
},
function (callback) {
// do stuff with the `$` content here
}
]);
}
});
我一直在阅读cheerio documentation
,但找不到内容加载时的回调示例。
最好的方法是什么?当我在脚本上抛出50个URL时,它会在cheerio正确加载内容之前过早地开始移动,而我正试图通过异步加载来控制任何错误。
我对异步编程和回调都很陌生,所以如果我在这里遗漏了一些简单的内容请告诉我。
答案 0 :(得分:5)
是的,cheerio.load
是同步的,您不需要任何回调。
request(url, function (err, resp, body) {
if (err) {
return console.log("Error!: " + err + " using " + url);
}
var $ = cheerio.load(body);
// do stuff with the `$` content here
});