'요청'과 'cheerio'를 사용하여 스크래퍼를 작성하려고합니다. 나는 100 개의 URL 배열을 가지고있다. 배열을 반복하고 각 URL에 '요청'을 사용하고 cheerio.load (body)를 수행합니다. 내가 3 이상을 증가 시키면 (즉, 테스트를 위해 < 3으로 변경) 스태커가 손상됩니다. var productNumber가 정의되지 않았으며 정의되지 않은 변수에서 split을 호출 할 수 없기 때문입니다. 웹 페이지가 응답하기 전에 for 루프가 계속 움직이고 있다고 생각합니다.이 질문은 nodeJS - Using a callback function with Cheerio이 동의하는 것 같습니다.cheerio node.js 콜백
내 문제는 정의되지 않은 변수가 없도록 웹 페이지가 '로드되었는지'또는 루프의 각 반복마다 구문 분석되는지를 이해할 수 없다는 것입니다. 다른 대답에 따르면 콜백이 필요하지 않지만 어떻게해야합니까? 출력의
for (var i = 0; i < productLinks.length; i++) {
productUrl = productLinks[i];
request(productUrl, function(err, resp, body) {
if (err)
throw err;
$ = cheerio.load(body);
var imageUrl = $("#bigImage").attr('src'),
productNumber = $("#product").attr('class').split(/\s+/)[3].split("_")[1]
console.log(productNumber);
});
};
예 :
1461536
1499543
TypeError: Cannot call method 'split' of undefined
어떤 오류가 발생하고 있습니까? – dankohn
질문에 추가, 정의되지 않은 분할을 호출 할 수 없습니다. 분할을 제거하고 imageUrl 및/또는 productNumber를 인쇄하면 일부 변수가 설정되지만 많이 정의되지 않아 웹 페이지가 응답하기 전에 루프가 계속 움직이고 있다고 생각하게됩니다. – brownie3003