[go] Go 언어로 자바스크립트 렌더링 크롤링하기

최근 웹 크롤링 분야에서 자바스크립트 렌더링 크롤링이 많이 사용되고 있는데, Go 언어로도 자바스크립트 렌더링 크롤링을 할 수 있다는 사실을 알고 계셨나요? Go 언어는 간편한 문법과 빠른 속도로 유명한 언어로, 자바스크립트 렌더링 크롤링에도 효과적으로 사용될 수 있습니다.

이번 포스트에서는 Go 언어를 사용하여 자바스크립트 렌더링 크롤링을 하는 방법에 대해 알아보겠습니다.

Puppeteer 사용하기

Go 언어에서 자바스크립트 렌더링 크롤링을 하려면 Puppeteer라는 라이브러리를 사용할 수 있습니다. Puppeteer는 구글에서 개발한 Headless Chrome을 제어하는 Node.js 라이브러리로, Go 언어에서도 사용할 수 있습니다.

먼저, Go 모듈을 설치해야 합니다. 터미널에서 다음 명령어를 실행해주세요.

go get github.com/chromedp/chromedp

그리고 다음과 같이 Go 코드를 작성하여 Puppeteer를 사용할 수 있습니다.

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/chromedp/cdproto/cdp"
	"github.com/chromedp/chromedp"
)

func main() {
	// 크롤링할 웹 페이지 URL
	url := "https://example.com"

	// 크롬브라우저 실행
	ctx, cancel := chromedp.NewContext(context.Background())
	defer cancel()

	// 자바스크립트 렌더링을 위해 5초간 대기
	ctx, cancel = context.WithTimeout(ctx, 5*time.Second)
	defer cancel()

	// 웹 페이지 접속
	var res string
	err := chromedp.Run(ctx,
		chromedp.Navigate(url),
		chromedp.WaitVisible(`body`),
		chromedp.OuterHTML(`html`, &res),
	)
	if err != nil {
		fmt.Println(err)
		return
	}

	// 크롤링 결과 출력
	fmt.Println(res)
}

위의 코드는 주어진 URL로 이동하여 자바스크립트가 렌더링된 HTML을 가져오는 예시입니다. chromedp 패키지의 함수들을 사용하여 웹 페이지에 접속하고, 자바스크립트가 완전히 렌더링될 때까지 기다린 다음 결과를 가져옵니다.

실행하기

위에서 작성한 코드를 실행하기 위해서는 Go 언어가 설치되어 있어야 합니다. Go 언어가 설치되어 있다면 다음과 같이 실행할 수 있습니다.

go run main.go

실행 결과로 해당 웹 페이지의 자바스크립트 렌더링된 HTML이 출력될 것입니다.

마무리

Go 언어를 사용하여 자바스크립트 렌더링 크롤링을 할 수 있습니다. Puppeteer를 사용하면 Headless Chrome을 제어하여 자바스크립트가 실행된 웹 페이지의 내용을 크롤링할 수 있습니다.

하지만 크롤링을 할 때는 웹 사이트의 이용 약관과 로봇 배제 표준을 준수하는 것이 매우 중요합니다. 합법적이고 윤리적인 방법으로 웹 크롤링을 수행하시길 바랍니다.

참고 자료: