개발일지
nodejs+ puppeteer (크롤링) 개발일지
입재
2020. 1. 17. 01:15
상품 2000개를 크롤링하고 그 상품들의 상세페이지를 이미지로 만들어 스토리지에 올리려다
난관에 봉착했다. 2000번을 돌면서 페이지를 하나씩 순차적으로 직렬로 돌자니 상품 하나당 10초미만으로 걸리고..
병렬로 돌리려니 하드웨어에 한계가... 그래서 직렬과 병렬을 조합해서 만들었더니 효과는 굉장했다.
이 방법보다 좀더 나은 방법을 멘토형한테 물어봐야겠다..
for(let [key, val] of res.entries()){
await Promise.all(val.map( async (element, idx) => {
const page = await browser.newPage()
let fileName = `${element.storeType}_${key}_${idx}.png`
await page.goto(element.url)
await page.waitFor(1000)
const elementTarget = await page.$('#goods-description')
// // await elementTarget.screenshot({ path: fileName })
await page.close()
console.log(fileName)
// console.log(fileName)
// element['descUrl'] = await uploadImage(`test/${fileName}`, fileName)
// await deleteFile(`${element.storeType}_${idx}.png`)
}))
}