JavaScript로 Web Scrapper를 하나 만드는 중입니다. <div>일단 다른 언어보다 접근이 쉬울것 같아서 공부할겸 만들고있었는대...</div> <div><br></div> <div>한번에 많은 페이지를 읽어오니 순서가 자기 마음대로 읽어오더군요.</div> <div>이리 저리 알아보니, JavaScript의 특성이 비동기성이라고 하더라구요.</div> <div><br></div> <div>그래서 질문하나 드립니다.</div> <div><br></div> <div>100개 이상의 페이지를 불러와 분석하여 특정데이터를 뽑아내는대,</div> <div>이게 순서대로 안돼니, 아직 request는 받지도 않았는대, 코드는 받았다고 생각하고 진행해서 문제가 생기더라구요.</div> <div><br></div> <div>그래서 동기화 시켜서 할수있는 방법이 있을까요?</div> <div>(검색해보니 callback함수를 이용하라는대.. 아직도 이넘이 이해가 안가네요..단순히 큐에 이벤트를 쌓아뒀다가 하는것 같기도 하고...흐..)</div> <div><br></div> <div><div>var request = require("request");</div> <div>var cheerio = require("cheerio");</div> <div>var fs = require("fs");</div> <div>var mkdir = require("mkdir");</div> <div>var path = require('path');</div> <div>var async = require('async');</div> <div>var downloader = require('./downloader');</div> <div>var mkdirp = require('mkdirp');</div> <div><br></div> <div><br></div> <div>var preHttp = "파싱할 사이트";</div> <div>var innerHttp;</div> <div><br></div> <div>var startPage = 1;</div> <div>var endPage = 50;</div> <div>var task1 = [];</div> <div><br></div> <div>for (var i = startPage; i <= endPage; i++) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>innerHttp = i.toString(10);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>var url = preHttp + innerHttp;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>mkdirp('./' + i, function(err) { </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>});</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>request({</div> <div> <span class="Apple-tab-span" style="white-space:pre;"> </span>url: url,</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}, function(error, response, body) {</div> <div> <span class="Apple-tab-span" style="white-space:pre;"> </span>var $ = cheerio.load(body);</div></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// 파싱과 작업</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>...</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>});</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>});</div> <div>}</div> <div><br></div> <div>이런식으로 짯는대.. 어떻게 변경하면 좋을지 도와좀 주시면 감사하겠습니다.</div> <div>다들 즐거운 주말 보내세요 ^^</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.