golang 자동화 사이트 스크린샷 찍기
휴가 나와서 집에 있는 동안은 게임이 질려서
할 게 없으니 생각난 소모임.
고로 자동으로 사이트 스크린샷하기.
소스코드를 조금 수정하면 여러 많은 사이트들을 스크린샷 하여 DB에 올릴 수도 있고...
더 수정하면 여러 페이지를 스크린샷하여 과거 데이터와 비교할 수도 있고....
chromedb 라이브러리를 이용하면 이미지 다운로드, 업로드... PDF 따기...
등등 진짜 웹에서 가능한 모든 일을 할 수 있을 정도로 무궁무진..
package main import ( "context" "github.com/chromedp/cdproto/emulation" "github.com/chromedp/cdproto/page" "github.com/chromedp/chromedp" "io/ioutil" "log" "math" ) func main() { context, cancel := chromedp.NewContext( context.Background(), ) defer cancel() // 스크린샷을 담기 위한 함수 var buf []byte if err := chromedp.Run(context, fullScreenShot(`https://sir.kr/`, 100, &buf)); err != nil { log.Fatalln(err) } if err := ioutil.WriteFile("fullScreenshot.png", buf, 0664); err != nil { log.Fatalln(err) } } // 화면 전체를 스크린 샷 찍기. // 출처 - https://github.com/chromedp/examples/blob/master/screenshot/main.go func fullScreenShot(url string, quality int64, res *[]byte) chromedp.Tasks { return chromedp.Tasks{ chromedp.Navigate(url), chromedp.ActionFunc(func(ctx context.Context) error { // get layout metrics _, _, cssContentSize, err := page.GetLayoutMetrics().Do(ctx) if err != nil { return err } width, height := int64(math.Ceil(cssContentSize.Width)), int64(math.Ceil(cssContentSize.Height)) // force viewport emulation err = emulation.SetDeviceMetricsOverride(width, height, 1, false). WithScreenOrientation(&emulation.ScreenOrientation{ Type: emulation.OrientationTypePortraitPrimary, Angle: 0, }). Do(ctx) if err != nil { return err } // capture screenshot *res, err = page.CaptureScreenshot(). WithQuality(quality). WithClip(&page.Viewport{ X: cssContentSize.X, Y: cssContentSize.Y, Width: cssContentSize.Width, Height: cssContentSize.Height, Scale: 1, }).Do(ctx) if err != nil { return err } return nil }), } }

게시판 목록
자유게시판
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 |
|
2주 전 | 49 | |
| 199628 | 2개월 전 | 228 | ||
| 199627 |
|
2개월 전 | 290 | |
| 199626 | 2개월 전 | 265 | ||
| 199625 | 2개월 전 | 157 | ||
| 199624 |
|
2개월 전 | 213 | |
| 199623 | 2개월 전 | 279 | ||
| 199622 | 2개월 전 | 229 | ||
| 199621 | 2개월 전 | 196 | ||
| 199620 | 2개월 전 | 151 | ||
| 199619 | 2개월 전 | 193 | ||
| 199618 | 2개월 전 | 126 | ||
| 199617 |
비버팩토리
|
2개월 전 | 248 | |
| 199616 | 2개월 전 | 141 | ||
| 199615 | 2개월 전 | 185 | ||
| 199614 | 2개월 전 | 229 | ||
| 199613 | 2개월 전 | 229 | ||
| 199612 | 2개월 전 | 185 | ||
| 199611 | 2개월 전 | 134 | ||
| 199610 | 2개월 전 | 94 | ||
| 199609 | 2개월 전 | 159 | ||
| 199608 |
techstar
|
2개월 전 | 145 | |
| 199607 | 2개월 전 | 221 | ||
| 199606 | 2개월 전 | 178 | ||
| 199605 | 2개월 전 | 244 | ||
| 199604 |
|
2개월 전 | 297 | |
| 199603 | 2개월 전 | 190 | ||
| 199602 | 2개월 전 | 181 | ||
| 199601 |
|
2개월 전 | 217 | |
| 199600 | 2개월 전 | 155 | ||
| 199599 | 2개월 전 | 223 |

댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기