반응형
다음의 예제 코드는 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
반응형
'Golang' 카테고리의 다른 글
Golang 난수 생성(math/rand) (0) | 2023.06.30 |
---|---|
디스코드가 Go 대신 Rust로 전환하는 이유 (0) | 2023.06.14 |
Golang 슬라이스 정렬(오름차순, 내림차순) (0) | 2023.04.10 |
Golang UUID 생성 (0) | 2023.03.27 |
Golang 임시 파일 생성(os.CreateTemp) (0) | 2023.03.27 |
댓글