我正在解析来自Alexa类别的数据,例如one。
我的代码可以找到here。
我正在获取网站的网址列表,然后尝试获取每个网站的排名。问题是我正在回到一个很好的网站列表(数组)和一个混乱的排名列表(也是一个数组但超出预期的顺序)。到目前为止,我的线索是节点阻塞功能有问题(我使用async.series一次运行一个函数但它不起作用)并且for循环肯定有问题。
我使用“node”从命令行运行它。任何建议/帮助非常感谢!谢谢。
答案 0 :(得分:0)
您的代码有两个问题:
i
i
就像这样4 0 2 1 3 5 7 6 12 11 9 13 8 15 16 18 21 19 17 22 23 20 14 24 10
)要修复此更改,您需要执行以下第二个功能:
...
function (callback) {
for (i = 0; i < websites.length; i++) {
clr(i);
};
}], function (error) {
if (error) {
console.log(error);
}
});
function clr(i){
alexaurl = "http://www.alexa.com/siteinfo/" + websites[i];
request(alexaurl, function (error, response, body) {
$ = cheerio.load(body);
$('.siteInfoPage #traffic-rank-content .metricsUrl a').each(function () {
//ranks.push($(this).text());
ranks[i]=$(this).text();
return false; // so it does not count the a:hover element
});
console.log(i);
console.log(websites);
console.log(ranks);
console.log("The website " + websites[i] + " has a rank of " + ranks[i]);
});
}