프로젝트 일지/BMT16 14. Go를 이용한 스크래퍼 리팩토링하기 (10) - Chromedp Dockerize 하기 & GitHub Actions - ECR을 사용한 배포 자동화 저번 포스트까지 Go의 Chromedp 라이브러리를 활용하여 스크래핑 코드를 작성하는 방법을 알아보았다. 이번 포스트에서는 작성한 코드를 docker 이미지를 굽고, 이 이미지를 자동으로 Lambda에 배포하는 방법을 알아보고자 한다. Chromedp 코드 Dockerize 하기 Chromedp 코드를 dockerize 하는 이유는 AWS Lambda 환경에서 스크래퍼 코드가 안정적으로 잘 돌아가게 만들기 위함이다. Lambda 위에서 가상 환경을 만들고 해당 환경 안에서 스크래핑을 진행할 수 있게 하는 것이다. 스크래핑을 위해선 Chrome 프로세스를 띄우고 이 프로세스를 조작하면서 정보를 긁어와야 하는데, Lambda와 같은 FaaS 서비스의 경우 임의의 프로세스를 띄우는 것을 막고 있다. 실제로 그.. 2024. 1. 2. 13. Go를 이용한 스크래퍼 리팩토링하기 (9) - goquery chromedp를 활용한 정적 페이지, 테이블 형태 정보 스크래핑 이번 포스트에서는 제어되는 그 고루틴에서 돌아가는 runCrawler 함수에 대해서 설명하고자 한다. 특히 python selenium의 대체제로 사용될 수 있는 chromedp 라이브러리를 사용한 코드에 대해서 더 자세하게 설명하고자 한다. (chromedp와 관련된 한국어 자료가 없어서 꽤나 고생했다) 아직까지는 한국어로 된 chromedp 사용법, 특히 goquery와 chromedp를 조합하는 포스트가 많이 없는 것 같아서, 이 기회에 정리해두려고 한다. 오늘 설명할 (내가 짠) 코드 전체 // subway_information에서 각 호선의 네이버코드와 역이름 정보 가져오기 -> 해당 역이름 페이지로 접속하여 HTML 획득 -> crawler로 스크래핑 func runCrawler(val map.. 2023. 9. 11. 12. Go를 이용한 스크래퍼 리팩토링하기 (8) - type assertion 이해하고 사용하기 (feat. interface 개론) 이전 포스트에서는 Mutext와 Semaphore를 활용하여 고루틴을 제어하는 방법에 대해서 알아보았다. 11. Go를 이용한 스크래퍼 리팩토링하기 (7) - Semaphore와 Mutex를 활용한 고루틴(Goroutine) 제어하기 저번 글에서는 Go로 S3 Uploader와 Downloader를 구현하고 strings.Trim() strings.Replace()를 사용하여 데이터 형식을 변경한 방법에 대해서 소개하였다. 자세한 글은 아래에서 확인 가능! 10. Go를 이용한 스크 kyumcoding.tistory.com 원래는 바로 goquery와 chromedp를 활용한 스크래퍼 코드를 뜯어보려고 했지만, 그 전에 type assertion 파트가 있어 잠깐 정리하고 넘어가려고 한다. Type As.. 2023. 8. 31. 11. Go를 이용한 스크래퍼 리팩토링하기 (7) - Semaphore와 Mutex를 활용한 고루틴(Goroutine) 제어하기 저번 글에서는 Go로 S3 Uploader와 Downloader를 구현하고 strings.Trim() strings.Replace()를 사용하여 데이터 형식을 변경한 방법에 대해서 소개하였다. 자세한 글은 아래에서 확인 가능! 10. Go를 이용한 스크래퍼 리팩토링하기 (6) - S3 Downloader Uploader 구현 & strings 패키지를 활용한 최종 이번 시간에 본격적으로 NaverCrawler 코드, 그 중 AWS S3 Downloader / Uploader 에 대해서 알아보겠다. 구현 과정에 대해 설명하면서 추가적으로 엘라스틱서치를 위한 데이터 변환에 대해서도 살짝 다뤄본 kyumcoding.tistory.com 오늘은 Goroutin을 제어하는 방법 중 Mutex, Semaphore를.. 2023. 8. 30. 이전 1 2 3 4 다음