본문 바로가기
Golang

Golang 웹 크롤링/크롤러

by 시바도지 2023. 6. 1.
반응형

다음의 예제 코드는 https://example.com 웹 페이지를 크롤링 하여

h1 태그를 추출하여 출력하는 예제 코드이다.

 

사용된 패키지에 대해 간단히 설명하자면 다음과 같다.

 

- fmt: 생략 


- io/ioutil: 파일 입출력을 쉽게 처리하기 위한 함수들을 제공. ioutil.ReadAll() 함수는 HTTP 응답의 본문을 읽어온다.

- net/http: HTTP 클라이언트와 서버를 구현하는 함수와 타입들을 제공. http.Get() 함수를 사용하여 웹 페이지에 GET 요청.

- regexp: 정규 표현식을 사용하여 텍스트를 검색, 추출하고 패턴 매칭을 수행하는 함수를 제공. 받아온 HTML 문서에서 <h1> 태그의 내용을 추출하기 위해 정규식을 활용.

 

package main

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

func main() {
	url := "https://example.com" // 크롤링할 웹 페이지의 URL

	// HTTP GET 요청 보내기
	response, err := http.Get(url)
	if err != nil {
		fmt.Printf("Failed to send GET request: %v", err)
		return
	}
	defer response.Body.Close()

	// 응답 본문 읽기
	body, err := ioutil.ReadAll(response.Body)
	if err != nil {
		fmt.Printf("Failed to read response body: %v", err)
		return
	}

	// <h1> 태그 추출
	re := regexp.MustCompile(`<h1>(.*?)<\/h1>`)
	match := re.FindStringSubmatch(string(body))
	if len(match) >= 2 {
		h1Content := match[1]
		fmt.Println(h1Content)
	} else {
		fmt.Println("No <h1> tag found")
	}
}

// result: Example Domain

 

반응형

댓글