[go] 동적 웹 페이지 스크래핑하기

동적 웹 페이지를 스크래핑하는 것은 웹 데이터를 추출하는 중요한 과제입니다.

이 글에서는 Golang을 사용하여 동적 웹 페이지를 스크래핑하는 방법에 대해 살펴보겠습니다.

구성 요소

  1. HTTP 요청 보내기
  2. 동적 내용 로드
  3. 데이터 추출하기

HTTP 요청 보내기

Golang의 내장 패키지 net/http를 사용하여 웹 페이지에 HTTP GET 요청을 보낼 수 있습니다.

resp, err := http.Get("https://example.com")
if err != nil {
    // 오류 처리
}
defer resp.Body.Close()

동적 내용 로드

동적으로 생성된 웹 페이지의 내용을 가져오기 위해서는 chromedp 패키지를 사용할 수 있습니다.

ctxt, cancel := chromedp.NewContext(context.Background())
defer cancel()

var buf []byte
err := chromedp.Run(ctxt, chromedp.Navigate("https://example.com"), chromedp.WaitVisible("body"), chromedp.CaptureScreenshot(&buf))
if err != nil {
    // 오류 처리
}

데이터 추출하기

스크래핑한 동적 웹 페이지의 내용을 추출하기 위해, goquery 패키지를 사용할 수 있습니다.

doc, err := goquery.NewDocumentFromReader(strings.NewReader(string(buf)))
if err != nil {
    // 오류 처리
}

doc.Find("a").Each(func(i int, s *goquery.Selection) {
    // 링크 추출
    link, _ := s.Attr("href")
    fmt.Println(link)
})

이제 동적 웹 페이지에서 데이터를 추출하는 Golang 프로그램을 작성하는 방법에 대해 알아보았습니다. 동적 웹 페이지 스크래핑은 데이터 수집 및 분석을 위한 중요한 도구로 활용될 수 있습니다.

참고 자료