이번 포스트에서는 Go 언어를 사용하여 웹 크롤링한 데이터를 데이터베이스에 저장하는 방법에 대해 알아보겠습니다.
데이터를 크롤링하기 위한 라이브러리 설치
먼저, Go 언어에서 웹 크롤링을 위한 라이브러리를 설치해야 합니다. 가장 많이 사용되는 라이브러리 중 하나인 goquery
를 사용하겠습니다. 다음 명령어를 사용하여 goquery
를 설치합니다.
go get github.com/PuerkitoBio/goquery
웹 크롤링하기
이제 웹 페이지에서 데이터를 크롤링하는 코드를 작성해보겠습니다. 아래의 예제는 goquery
를 사용하여 특정 웹 페이지에서 제목과 링크를 크롤링하는 예제입니다.
package main
import (
"fmt"
"log"
"github.com/PuerkitoBio/goquery"
)
func main() {
url := "https://example.com" // 크롤링할 웹 페이지 URL
doc, err := goquery.NewDocument(url)
if err != nil {
log.Fatal(err)
}
doc.Find("h2").Each(func(index int, element *goquery.Selection) {
title := element.Text()
link, _ := element.Attr("href")
fmt.Printf("Title: %s, Link: %s\n", title, link)
})
}
위 코드의 url
변수에는 크롤링할 웹 페이지의 URL을 입력해야 합니다. goquery.NewDocument(url)
을 사용하여 해당 웹 페이지를 가져온 후, Find()
함수를 사용하여 원하는 HTML element를 선택합니다. 각 element에서 필요한 데이터를 추출하여 사용할 수 있습니다.
데이터베이스에 저장하기
이제 데이터를 크롤링했으니, 이를 데이터베이스에 저장하는 방법에 대해 알아보겠습니다. 데이터베이스에 데이터를 저장하기 위해 database/sql
와 원하는 데이터베이스의 드라이버가 필요합니다. 다음은 MySQL을 사용하는 예제입니다.
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// DB 연결 설정
db, err := sql.Open("mysql", "user:password@tcp(server:port)/database")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 데이터베이스 쿼리 실행
_, err = db.Exec("INSERT INTO tablename (title, link) VALUES (?, ?)", title, link)
if err != nil {
log.Fatal(err)
}
}
위 코드에서 sql.Open()
함수에는 MySQL 데이터베이스의 연결 정보를 입력합니다. db.Exec()
함수를 사용하여 쿼리를 실행하고 데이터를 삽입할 수 있습니다.
마무리
이제 Go 언어로 웹 크롤링한 데이터를 데이터베이스에 저장하는 방법을 알아보았습니다. 크롤링한 데이터를 데이터베이스에 저장하여 필요한 작업을 수행할 수 있습니다. 파이썬과는 다르게 Go 언어는 간결하고 효율적인 프로그래밍을 지원하므로, 웹 크롤링과 데이터 처리를 함께 사용할 때 유용할 것입니다.