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