오늘은 지난주에 이어 퍼펫티어를 이용한 스크래핑에 대해서 포스팅을 써봐야지
이번에는 퍼펫티어에서 가장 많이 사용했던 method들을 정리해보고자 한다!
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
page.setViewport({ width: 1200, height: 1000 });
await page.goto(TARGET);
우선 시작전에 스크래핑에서 페이지를 조작할 때 셀렉터를 매우 많이 사용하게 되는데 셀렉터를 쉽게 확인하는 방법은 개발자 도구에서 copy selector를 하면 끝! 처음에는 이 방법을 몰라서 꽤나 고생했다 ㅜ..
await page.waitForSelector('.item > h1', { timeout: 10000 });
'제품'이라는 단어가 포함된 버튼
을 기다려야 하는 경우는 아래와 같이 XPath로 요소를 찾아주는 걸 추천!await page.waitForXPath(`//h2[contains(text(), "제품")]`);
await page.click('#target-element');
await skuPage.waitForXPath(`//h2[contains(text(), "제품")]`);
const productDetailButton = await skuPage.$x(
`//h2[contains(text(), "제품")]`
);
if (productDetailButton.length > 0) await productDetailButton[0].click();
await page.select('#target-select', 'option-value');
const productLinks = await page.evaluate(() => {
const selector = '.product-tile__image';
const links = Array.from(document.querySelectorAll(selector)).map(
(el) => 'https://www.fritzhansen.com' + el.getAttribute('href')
);
return links;
});
await page.close();
await browser.close();
할 때는 이것저것 찾아보느라 힘들었는데 정리하고 나니깐 왤케 별거 없어보이는지!
진짜 이 메소드들만 알면 스크래핑 끝 ㅡㅡ!이라고 할 수 있겠다.
그 뒤로는 스크랩한 데이터만 잘 가공하면 됩니다! 화이팅!🥳