일부 데이터를 스크랩하기위한 작은 스크립트를 작성하려고합니다. 나는 자바 스크립트에서 몇 가지 기본 지식을 가지고 있지만 모든 비동기 콜백 또는 약속 물건들로 잃어 버렸습니다. 여기에 내가 지금 가지고있는 것입니다 :Node.js URL 배열에 루프가있는 웹 스크래핑
url = "http://Blablablabla.com";
var shares = function(req, res) {
request(url, function (error, response, body) {
if (!error) {
var $ = cheerio.load(body),
share = $(".theitemIwant").html();
return res.send(url + ":" + share);
} else {
console.log("We've encountered an error: " + error);
}
})
}
그래서이 코드 조각으로 모든 것이 잘됩니다. 내가 뭘하고 싶은 것입니다 :
- 내가 이런 식으로 뭔가를 사용할 필요가 알고있는이
data = [{url: url1, shares: share},{url: url2, shares: share},etc...]
처럼, 다른 배열로 내 폐기 데이터를 저장 뭔가를 URL var urls = [url1,url2,url3,etc...]
data.push({ urls: url, shares: share})})
그리고 두 번째 데이터 배열로 데이터를 푸시하기 위해 첫 번째 URL 배열을 반복해야한다는 것을 알고 있습니다.
그러나 나는 request
메서드로 잃어 버렸고 내 상황에서 비동기 문제를 처리해야합니다.
감사합니다.
편집 # 1 :
내가 약속을 사용하는이 시도 :var url = "www.blablabla.com"
var geturl = request(url, function (error, response, body) {
if (!error) { return $ = cheerio.load(body) } else
{ console.log("We've encountered an error: " + error); }
});
var shares = geturl.then(function() {
return $(".nb-shares").html();
})
만 가지고 다음과 같은 오류 geturl.then is not a function
... – Nix
시작 간단하고'request' 호출을 promisify : 여기 – Bergi
@Bergi 내 게시물을 업데이트합니다. –