[go] Go 언어로 웹 페이지 파싱

Go 언어를 사용하여 웹 페이지를 파싱하고 데이터를 추출하는 것은 상당히 간단하고 효과적입니다. Go 언어의 간결함과 동시에 강력한 도구들을 사용하여 웹 페이지 파싱을 통해 데이터를 수집하고 분석할 수 있습니다.

이번 포스트에서는 Go 언어를 사용하여 웹 페이지를 파싱하는 방법에 대해 살펴보겠습니다.

1. 웹 페이지 다운로드

먼저, net/http 패키지를 사용하여 웹 페이지를 다운로드합니다.

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    url := "https://example.com"
    response, err := http.Get(url)
    if err != nil {
        panic(err)
    }
    defer response.Body.Close()
    data, err := ioutil.ReadAll(response.Body)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(data))
}

2. HTML 파싱

이제, golang.org/x/net/html 패키지를 사용하여 다운로드한 HTML을 파싱합니다.

package main

import (
    "fmt"
    "golang.org/x/net/html"
    "net/http"
)

func main() {
    url := "https://example.com"
    response, err := http.Get(url)
    if err != nil {
        panic(err)
    }
    defer response.Body.Close()
    token := html.NewTokenizer(response.Body)
    for {
        tt := token.Next()
        switch {
        case tt == html.ErrorToken:
            return
        case tt == html.StartTagToken:
            tag := token.Token()
            if tag.Data == "a" {
                fmt.Println(tag.Data)
            }
        }
    }
}

3. 데이터 추출

HTML을 파싱한 후에는 원하는 데이터를 추출할 수 있습니다. 이를 위해서는 golang.org/x/net/html 패키지를 사용하여 원하는 요소를 찾고 해당 요소의 내용을 추출할 수 있습니다.

package main

import (
    "fmt"
    "golang.org/x/net/html"
    "net/http"
    "strings"
)

func main() {
    url := "https://example.com"
    response, err := http.Get(url)
    if err != nil {
        panic(err)
    }
    defer response.Body.Close()
    token := html.NewTokenizer(response.Body)
    for {
        tt := token.Next()
        switch {
        case tt == html.ErrorToken:
            return
        case tt == html.StartTagToken:
            tag := token.Token()
            if tag.Data == "title" {
                token.Next()
                fmt.Println(strings.TrimSpace(token.Token().Data))
            }
        }
    }
}

마무리

Go 언어를 사용하여 웹 페이지를 파싱하는 간단한 예시를 살펴보았습니다. 이를 기반으로 웹 크롤링, 데이터 수집, 정보 추출 등 다양한 용도로 활용할 수 있습니다.

이상으로 Go 언어로의 웹 페이지 파싱에 대한 간단한 안내였습니다. 추가적인 정보는 Go 언어 공식 문서를 참고하시기 바랍니다.