[go] Go 언어로 웹 API 크롤링하기

Go 언어는 간결하면서도 성능이 우수한 프로그래밍 언어로 알려져 있습니다. 이번에는 Go 언어를 사용하여 웹 API를 크롤링하는 방법에 대해 알아보겠습니다.

1. HTTP 요청 보내기

Go 언어에서는 net/http 패키지를 사용하여 HTTP 요청을 보낼 수 있습니다. 아래는 간단한 GET 요청을 보내는 예제입니다.

package main

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

func main() {
	resp, err := http.Get("https://api.example.com/data")
	if err != nil {
		fmt.Println("HTTP GET request failed:", err)
		return
	}

	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Failed to read response body:", err)
		return
	}

	fmt.Println(string(body))
}

위의 예제는 http.Get() 함수를 사용하여 “https://api.example.com/data”에 GET 요청을 보내고, 해당 응답을 읽어와 출력하는 간단한 예제입니다.

2. JSON 데이터 파싱하기

웹 API에서 반환되는 데이터는 주로 JSON 형식으로 제공됩니다. Go 언어에서는 encoding/json 패키지를 사용하여 JSON 데이터를 파싱할 수 있습니다.

다음은 JSON 데이터를 파싱하여 필요한 데이터를 추출하는 예제입니다.

package main

import (
	"encoding/json"
	"fmt"
)

type Data struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

func main() {
	jsonStr := `{"id": 1, "name": "John Doe"}`

	var data Data
	err := json.Unmarshal([]byte(jsonStr), &data)
	if err != nil {
		fmt.Println("Failed to parse JSON:", err)
		return
	}

	fmt.Println("ID:", data.ID)
	fmt.Println("Name:", data.Name)
}

위의 예제는 json.Unmarshal() 함수를 사용하여 JSON 데이터를 파싱하고, Data 구조체에 해당 데이터를 매핑하는 예제입니다. 이후 추출한 데이터를 출력합니다.

3. 크롤링한 데이터를 활용하기

크롤링한 데이터를 활용하는 방법은 사용하는 목적에 따라 다양합니다. 예를 들어, 데이터를 데이터베이스에 저장하거나 다른 API와 데이터를 비교하여 특정 작업을 수행할 수 있습니다.

또한, 크롤링한 데이터를 가공하여 웹 페이지에 표시하는 등 다양한 용도로 활용할 수도 있습니다.

참고 자료

Go 언어를 사용한 웹 API 크롤링은 간단하면서도 강력한 기능을 제공합니다. 다양한 웹 API의 데이터를 활용하여 유용한 서비스를 개발해보세요!