2
저는 Node.js를 처음 사용합니다. zombie.js를 사용하여 몇 개의 웹 사이트에서 웹 페이지 제목을 긁어 모으고 있습니다. 다음은배열에 누락 된 요소가 있습니다.
var Browser = require("zombie");
var util = require("util");
halt = require('delayed');
title = [];
url = [ 'http://www.apple.com', 'http://www.microsoft.com', 'http://www.dell.com' ];
function getTitles(url){
//console.log('Start scraping title');
var length = url.length;
console.log('Total Site to Scrape: '+length);
label = 1;
for(var i=0;i<length;i++){
browser = new Browser()
browser.runScripts = false
browser.setMaxListeners(0);
browser.visit(url[i], function(e, browser, status, errors) {
browser.wait(function(){
title[i] = browser.text('html > head > title');
console.log(label+': '+title[i]);
browser.close();
label++;
});
});
};
}
getTitles(url);
halt.delay(function() {
console.log('Array Length: '+title.length)
console.log('Array Content: '+title)
}, 10)
코드의 출력됩니다 :
Total Site to Scrape: 3
1: Apple
2: Dell Official Site - The Power To Do More | Dell
3: Microsoft Home Page | Devices and Services
Array Length: 4
Array Content: ,,,Microsoft Home Page | Devices and Services
부분 이해가 안 :
- 왜 배열 길이가 대신 4를 반환 다음은 내 코드입니다 3의? 세 개의 URL이 있습니다
- 왜 배열 내용이 마지막 요소 만 반환합니까? 다른 두 개의 누락 된 요소는 어디에 있습니까?
조금 두껍기 때문에 죄송합니다. 귀하가 저에게 준 링크에 대한 득표 수를 기준으로 funcs 배열의 내용은 여전히 실제 값이 아니라 다음과 같습니다 : 배열 내용 : function() {console.log ("My value :"+ i); }, function() {console.log ("My value :"+ i); }, function() {console.log ("My value :"+ i); } – Caracos