Languages/Go

[Go] 크롤링, 스크래핑 하기

MOONCO 2022. 3. 16. 19:09

사용할 모듈

"net/http" - ( url 접속해서 http 요청 보내고, 응답 받는 모듈 )

"github.com/PuerkitoBio/goquery" - ( html body 요소를 분석해서, 특정 정보를 가져오는 모듈 )

 

net/http 사용하기

import (
  "net/http"
  "fmt"
)

package main

func main(){
  // net/http 모듈 사용해 네이버 페이지 정보 요청하기 ( Get )
  // res(response)와, err(error) 받아오기
  res,err := http.Get("www.naver.com")
  
  // 페이지를 정상적으로 응답받았는지 확인하기
  // 정상 : 200
  fmt.Println(res.StatusCode)
}

 

goquery 사용하기

import (
  "net/http"
  "log"
  "github.com/PuerkitoBio/goquery"
)

package main

func main(){
  // net/http 모듈 사용해 네이버 페이지 정보 요청하기 ( Get )
  res, err := http.Get("www.naver.com")
  
  //에러 체크
  if err != nil {
    log.Fatal(err)
  }
  
  // 응답받은 페이지의 body태그를 goquery로 분석하기
  doc, err := goquery.NewDocumentFromReader(res.Body)
  
  //에러 체크
  if err != nil {
    log.Fatal(err)
  }
  
  // 분석한 페이지에서 클래스 찾기 ( Find )
  exClass := doc.Find(".클래스이름")
  
  // 분석한 페이지에서 태그 찾기
  exTag := doc.Find("태그이름")
  
}
반응형