【发布时间】:2019-04-09 16:31:44
【问题描述】:
我在node 中编写了一个脚本,使用两个不同的函数getPosts() 和getContent() 在其中提供回调,以便打印调用独立函数getResult() 的结果。我的脚本中定义的选择器完美无缺。
但是,当我执行我的脚本时,它什么也没打印。它也不会抛出任何错误。我试图模仿 Neil 在this post 中提供的逻辑。
我怎样才能成功?
到目前为止我已经写了:
var request = require('request');
var cheerio = require('cheerio');
const url = 'https://stackoverflow.com/questions/tagged/web-scraping';
function getPosts(callback){
request(url, function (error,response, html) {
if (!error && response.statusCode == 200){
var $ = cheerio.load(html);
$('.summary .question-hyperlink').each(function(){
var items = $(this).text();
var links = $(this).attr("href");
callback(items,links);
});
}
});
}
function getContent(item,link,callback){
request(link, function (error,response, html) {
if (!error && response.statusCode == 200){
var $ = cheerio.load(html);
var proLink = $('.user-details > a').eq(0).attr("href");
callback({item,link,proLink});
}
});
}
function getResult() {
getPosts(function(item,link) {
getContent(item,link,function(output){
console.log(output);
});
});
}
getResult();
【问题讨论】:
-
猜测您的请求之一会返回错误或响应代码,该代码不是 200,因此不会被记录。尝试添加
else { console.error(error); }
标签: node.js web-scraping request cheerio