크롤러 만들기 (3) > Golang

Golang

크롤러 만들기 (3) 정보

크롤러 만들기 (3)

본문

꽤 오랜만에.. 크롤러 만들기 글을 써봅니다.

사실 학업이니 일이니 너무 바빴네요.

 

여태까지 URL, Builder, Post 초기화 부분을 진행했습니다.

아직 이 부분이 완성된 건 아니고 제 생각엔 하나로 통일하거나 파일 기반으로 진행하는 게 추가되야 할 듯 하나 이건 다음에 구현하고록 합시다.

 

오늘 할 부분은 여태 초기화했던 부분들을 바탕으로 실제 웹 페이지를 접속해서 데이터를 받아오는 구조체와 메소드, 함수를 작성하는 부분입니다.

 

제가 웹 크롤링할 때 사용할 라이브러리는 https://github.com/chromedp/chromedp 라이브러리입니다.

크롬 드라이버만 있으면 작동할 수 있는 라이브러리고 사용방법이 간단하여 써보겠습니다.

 

Crawl 폴더를 생성하여 crawl.go 파일을 생성..

package Crawl

import (
   "context"
   "github.com/chromedp/chromedp"
   "gnuCrawler/Setting"
   "time"
)

type WebDriver struct {
   ctx       context.Context
   cancel     context.CancelFunc
   Str       string // 데이터 반환
}

func NewCrawler() *WebDriver {
   return &WebDriver{}
}

// Run 메소드
func (w *WebDriver) Run(url *Setting.URL) string {
   w.ctx, w.cancel = chromedp.NewContext(context.Background())
   w.ctx, w.cancel = context.WithTimeout(w.ctx, 30 * time.Second)
   defer w.cancel()

   err := chromedp.Run(w.ctx,
      chromedp.Navigate(url.URL + url.PageNumber),
      chromedp.WaitVisible(`body div#ft`),
      chromedp.InnerHTML(`html body div#wrapper div#container_wr div#container div#bo_list form#fboardlist div.tbl_head01.tbl_wrap table tbody tr td.td_subject div.bo_tit a`, &w.Str),
      )
   if err != nil {
      panic(err)
   }

   return w.Str
}

app.go 에서는

w := Crawl.NewCrawler()
data := w.Run(URL)
fmt.Println(data)

코드를 추가해줍시다.


                                                                        ㅌㅋㅊㅋㅌㅊㅋㅌㅊㅋㅌㅊㅋㅊ

 

출력 결과입니다.

확인해보니 https://demo.sir.kr/gnuboard5/bbs/board.php?bo_table=free&page= 링크에서 맨 위 게시물이 뜨네요.

 

오늘은 여기까지.

이제 할 부분은

1. URL과 PageNumber를 합치고, 페이지 넘버를 자동으로 부여해주는 것

2. Post 부분에서 세팅한 값들에 따라 자동으로 크롤링이 가능하게 만드는 것

3. 코드 이쁘게 재수정

 

크게 이 3개네요.

지금 보니까 Builder 부분은 사용하지 않을 듯 합니다.

사실 개발하기 전에는 Builder에 따라 크롤링 태그를 바꿀 수 있게 할려고했는데

연습용 프로젝트니까 일단 기본 Gnu로 진행하고 Builder 부분은 삭제하기로 하겠습니다.

 

 

 

추천
0

댓글 0개

전체 40 |RSS
Golang 내용 검색

회원로그인

진행중 포인트경매

  1. 참여2 회 시작24.04.25 20:23 종료24.05.02 20:23
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT