[go] Go 언어로 웹 크롤링한 데이터를 데이터베이스에 저장하기

이번 포스트에서는 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 언어는 간결하고 효율적인 프로그래밍을 지원하므로, 웹 크롤링과 데이터 처리를 함께 사용할 때 유용할 것입니다.

참고 자료