[go] 웹 스크래핑을 이용한 여행 정보 수집하기

여행을 준비할 때, 여러 웹사이트에서 정보를 수집하는 것은 번거로운 일입니다. 이를 자동화하는 한 가지 방법은 웹 스크래핑입니다. 웹 스크래핑을 통해 웹사이트에서 여행 관련 정보를 수집하여 자신만의 여행 가이드를 만들 수 있습니다. 본 블로그는 Go 언어를 사용하여 웹 스크래핑을 통해 여행 정보를 수집하는 방법을 설명합니다.

필요한 라이브러리 설치하기

가장 먼저, 웹 스크래핑에 사용할 라이브러리를 설치해야 합니다. Go 언어의 경우, goquery와 같은 서드 파티 라이브러리를 사용하여 웹 스크래핑을 수행할 수 있습니다. 아래는 Go 모듈을 사용하여 라이브러리를 설치하는 예시입니다.

go get github.com/PuerkitoBio/goquery

웹 페이지에서 정보 추출하기

다음으로, 웹 페이지에서 정보를 추출하는 방법을 알아보겠습니다. goquery 라이브러리를 사용하여 HTML을 파싱하고, 원하는 정보를 추출할 수 있습니다. 아래 예시는 웹 페이지에서 제목과 가격 정보를 추출하는 방법을 보여줍니다.

package main

import (
    "fmt"
    "log"

    "github.com/PuerkitoBio/goquery"
)

func main() {
    doc, err := goquery.NewDocument("https://example.com")
    if err != nil {
        log.Fatal(err)
    }

    doc.Find("div.product").Each(func(i int, s *goquery.Selection) {
        title := s.Find("h2").Text()
        price := s.Find("span.price").Text()
        fmt.Printf("Item %d: %s - %s\n", i, title, price)
    })
}

결과 저장하기

마지막으로, 추출한 정보를 저장하는 방법을 알아봅시다. Go 언어를 사용하여 웹 스크래핑한 결과를 파일에 저장할 수 있습니다. 아래는 웹 스크래핑한 결과를 CSV 파일로 저장하는 예시입니다.

func writeToFile(data []string) error {
    file, err := os.Create("result.csv")
    if err != nil {
        return err
    }
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    for _, record := range data {
        err := writer.Write([]string{record})
        if err != nil {
            return err
        }
    }
    return nil
}

위의 예시 코드를 통해 Go 언어를 사용하여 웹 스크래핑을 수행하고, 결과를 저장하는 방법을 알아보았습니다. 이를 응용하여 자신만의 여행 정보를 수집하고 저장할 수 있습니다.

더 많은 정보는 goquery 공식 문서에서 확인할 수 있습니다.