Server/NodeJS & NestJS
Node) puppeteer로 웹스크래퍼 작성하기
Juzdalua
2022. 11. 2. 19:23
라이브러리를 설치한다.
npm i puppeteer-extra puppeteer-extra-plugin-stealth
opensea 프로필에서 bio 정보를 읽어오는 스크래퍼를 만들자.
오픈씨처럼 클라우드플레어로 막혀 있는 페이지는 스텔스를 사용해야 해서 시간이 더 오래걸린다.
// WebScraper.ts
import puppeteer from 'puppeteer-extra';
import stealth from "puppeteer-extra-plugin-stealth";
puppeteer.use(stealth())
export async function checkBioUniqueString(openseaNickname: string, uniqueString: string): Promise<Boolean> {
try {
const URL = `https://opensea.io/${openseaNickname}`;
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto(URL)
const content = await page.content();
console.log(content)
await browser.close()
return content.indexOf(`"bio":"${uniqueString}"`) > 0;
} catch (error) {
console.error(error)
return false;
}
}
해당 주소의 프로필을 스크래핑 한 후, bio에 특정 메세지가 작성되어 있는지 확인하는 로직을 구현했다.
// index.ts
import { checkBioUniqueString } from "./utils/WebScraper";
checkBioUniqueString("0xabcd...xyz", "test hi");
엄청난 양을 스크래핑 하기 때문에 실제로 사용하기에는 어려워보인다.
https://www.npmjs.com/package/puppeteer
puppeteer
A high-level API to control headless Chrome over the DevTools Protocol. Latest version: 19.2.0, last published: 7 days ago. Start using puppeteer in your project by running `npm i puppeteer`. There are 5374 other projects in the npm registry using puppetee
www.npmjs.com