[go] 반복문을 사용하여 여러 페이지 스크래핑하기

이번에는 Go 언어를 사용하여 여러 웹 페이지를 스크래핑하는 방법에 대해 알아보겠습니다. Go 언어의 강력한 동시성 기능과 내장된 HTTP 라이브러리를 활용하여 이 작업을 손쉽게 수행할 수 있습니다.

필요한 패키지 가져오기

먼저, 다음과 같이 net/httpgolang.org/x/net/html 패키지를 가져와야 합니다.

import (
	"net/http"
	"golang.org/x/net/html"
)

페이지 스크래핑 함수 작성

다음으로, 여러 페이지를 스크래핑하는 함수를 작성해야 합니다. 아래의 예제는 GetLinks 함수를 사용하여 주어진 URL에서 모든 링크를 스크래핑하는 것을 보여줍니다.

func GetLinks(url string) ([]string, error) {
	resp, err := http.Get(url)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	doc, err := html.Parse(resp.Body)
	if err != nil {
		return nil, err
	}

	var links []string
	var f func(*html.Node)
	f = func(n *html.Node) {
		if n.Type == html.ElementNode && n.Data == "a" {
			for _, a := range n.Attr {
				if a.Key == "href" {
					links = append(links, a.Val)
				}
			}
		}
		for c := n.FirstChild; c != nil; c = c.NextSibling {
			f(c)
		}
	}
	f(doc)
	return links, nil
}

여러 페이지 스크래핑하기

이제 GetLinks 함수를 사용하여 여러 페이지를 스크래핑할 수 있습니다. 아래의 예제는 여러 URL에서 링크를 스크래핑하는 방법을 보여줍니다.

func ScrapeMultiplePages(urls []string) {
	for _, url := range urls {
		links, err := GetLinks(url)
		if err != nil {
			fmt.Println("Error scraping", url, ":", err)
		} else {
			fmt.Println("Links from", url, ":", links)
		}
	}
}

마무리

이제 여러 페이지를 스크래핑하는 간단한 Go 프로그램을 작성하는 방법을 알아보았습니다. Go 언어를 사용하면 동시성을 활용하여 빠르고 효율적으로 웹 페이지를 스크래핑할 수 있습니다.

이제 여러 페이지를 스크래핑하는 간단한 Go 프로그램을 작성하는 방법을 알아보았습니다. Go 언어를 사용하면 동시성을 활용하여 빠르고 효율적으로 웹 페이지를 스크래핑할 수 있습니다.