[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 언어 공식 문서를 참고하시기 바랍니다.