본문 바로가기

분류 전체보기111

6. Go를 이용한 스크래퍼 리팩토링하기 (2) - goquery, Goroutine, sync.WaitGroup 저번 글에서는 왜 Go를 이용해 코드를 리팩토링하게 되었는지 그 계기와 함께 리팩토링한 코드 중 '역 코드 스크래퍼'의 HandleRequest 함수에 대해서 살짝 알아보았다. 이번 포스트에서는 '역 코드 스크래퍼'의 핵심이 되는 스크래핑 파트에 대해서 알아보면서 거기에 쓰인 goqeury, goroutine, waitgoup에 대해서 설명하겠다. run 함수 run 함수는 Goroutine을 활용하여 스크래퍼(scrapeNavercode)를 병렬로 돌리고, 채널로 값을 받아온 후 원하는 형태로 값을 정리하는 역할을 수행하는 함수이다. func run(num int) { var baseURL string = "https://pts.map.naver.com/end-subway/ends/web/" // 20.. 2023. 8. 9.
5. Go를 이용한 스크래퍼 리팩토링하기 (1) - Introduction, 그런데 goquery, S3 Upload, Lambda 활용 코드를 곁들인 이 글에서는 go에서 goquery, lambda, s3 다루는 법을 자세하게 설명하지는 않습니다. 이 블로그에 다른 글을 통해 업로드 할 예정입니다. 그래도 제가 사용한 소스 코드 전체는 있으니 참고 가능합니다. 지난 번에 Python의 Multiprocessing 모듈을 활용하여 병렬처리를 하고, 해당 코드를 AWS Lambda에 올리려 했다가 대차게 실패했다는 글을 적었다. 해당 글은 아래에 https://kyumcoding.tistory.com/42 4. 파이썬 크롤링 코드에 Process, Pipe 적용하기 저번 시간에 AWS Lambda에서 Pool을 지원하지 않는다는 사실을 알게 되었다. (자세한 과정은 여기 참고) Process와 Pipe를 이용해서 코드를 다시 짜라는 말에 너무나 슬펐지만.. 2023. 8. 8.
[실날데] 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 - 3주차: Introduction to Airflow Airflow 소개 파이썬으로 작성된 데이터 파이프라인 프레임워크, 데이터 파이프라인 스케쥴링을 지원 정해진 시간에 ETL 실행 혹은 한 ETL의 실행이 끝나면 다음 ETL 실행 웹 UI를 제공하기도 함 데이터 파이프라인(ETL)을 쉽게 만들 수 있도록 해줌 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공 (https://airflow.apache.org/docs/) 데이터 파이프라인 관리 관련 다양한 기능을 제공해줌 - 특히 Backfill Airflow에서는 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름 하나의 DAG는 하나 이상의 태스크로 구성됨 Operator를 사용해 Task를 정의함 ⇒ Operator가 인스턴스화가 될 경우 Task라고 함 .. 2023. 7. 30.
AWS EC2 ssh 접속시 "Host key verification failed" 해결 방법 나와 같은 학생, AWS 프리티어 유저들은 EC2를 띄우고 지우고 하는 일이 꽤 있다. 문제는 한 번 사용했던 key 파일을 다시 사용하려고 하면 "Host key verification failed"을 뱉어내며 접속이 불가한 경우가 발생... Elastic IP 연결 안 된 것도 신경쓰이고 (참고로 Elastic IP 생성하고 연결 안한 채로 방치하면 비용 나감), 뭔가 빠른 시간 안에 해결하지 못하면 비용이 나갈 것 같은 불안함에 머리가 하얘지고 혼돈과 파괴의 현장이 된다. 해결방법 결론부터 말하자면 키를 다시 생성할 수 있도록 값을 초기화해주는 명령어를 날리면 된다 ssh-keygen -R {접속IP} 원인 서버, 아이피를 변경한 후에도 기존 서버의 키 정보가 남아있어 충돌이 발생한다고 함 2023. 7. 25.