2
저는 노드에 스크레이퍼를 구현하고 있습니다.이 노드는 request과 cheerio을 사용하여 페이지를로드하고 구문 분석합니다.Node.js - Cheerio에서 콜백 함수 사용
요청 후에 만 콜백을 넣고 Cheerio가 페이지로드를 마쳤습니다. async
extension을 사용하려고하지만 콜백을 어디에 둘 것인지 확실하지 않습니다.
request(url, function (err, resp, body) {
var $;
if (err) {
console.log("Error!: " + err + " using " + url);
} else {
async.series([
function (callback) {
$ = cheerio.load(body);
callback();
},
function (callback) {
// do stuff with the `$` content here
}
]);
}
});
나는 cheerio documentation
를 읽어 봤는데 내용이로드 된 경우에 대한 콜백의 예를 찾을 수 없습니다.
을 할 수있는 가장 좋은 방법은 무엇입니까? 스크립트에서 50 개의 URL을 던질 때 cheerio가 내용에 제대로로드되기 전에 너무 일찍 이동하기 시작하며 비동기 로딩으로 인한 오류를 막으려고합니다.
비동기 프로그래밍 및 콜백에 대해서는 완전히 새로운 기능이므로 여기에 간단한 내용이없는 경우 알려 주시기 바랍니다.
'cheerio.load'는 내가 볼 수있는 한 동기식 메소드이므로'async'를 사용할 필요가 없습니다. '너무 일찍 움직이기 시작한다'는 것은 무엇을 의미합니까? 'request'에 대한 호출을 제한/처리하고 싶습니까? – robertklep
동기식이란 무엇입니까? (나는 그것이 올바른 용어라고 생각합니다 ... 노드가 완료 될 때까지 기다릴 것입니까?) – Jascination
@robertklep 또한 질문에 답하기 위해 많은 링크를 던지면서 이상한 일이 발생했습니다. URL에서 긁어 모으는 정보를 기반으로 개체를 만들었고 때로는 필드가 누락되어 종종 모든 필드가 누락되었습니다. 이 것을 막기 위해 무언가를 만들려고 노력하고 있지만, 문제는 다른 곳에있을 수 있습니다. – Jascination