brunch

2025 대선 개표율에 따른 득표수

ChatGPT로 만들어본 웹사이트 데이터 크롤링 프로그램

by Uncle Lee

어제 대선 개표 방송을 보면서 시간대별로 어떤 후보가 얼마나 득표하는지 데이터를 모아 그래프로 그려보고 싶다는 생각이 들었습니다.

대부분의 코드는 ChatGPT를 활용하였습니다.

크롤링 관련 코딩은 처음 해보는 것이지만 AI를 써서 생각보다 빠르게 완성할 수 있었습니다.

프로그램의 원리는 간단합니다.


먼저 데이터를 가져올 웹사이트를 확인합니다. 저는 네이버의 실시간 개표 현황 페이지에서 개표율과 후보별 득표수를 가져오기로 했습니다.


크롬에서 개발자도구를 열면 html태그가 어떻게 구성되어 있는지 볼 수 있습니다.

원하는 데이터가 어떤 구조로 담겨 있는지 파악해 보고 프로그램 설계에 들어갔습니다.


1. 개표현황 URL에 접속해서 1분 간격으로 자동으로 웹페이지를 다운로드 받습니다.

2. 그리고 가져온 웹페이지에서 원하는 데이터를 추출하여 csv파일에 추가해 넣습니다.

3. 이렇게 수집한 데이터를 기반으로 시간대별 그래프를 그립니다.


구글 검색으로 바닥부터 만들수도 있겠지만 그러기엔 시간이 모자를 것 같았습니다.

그 사이에 개표가 끝나버리면 프로그램을 다 만들었다고 해도 소용이 없기 때문이죠.

그래서 빨리 ChatGPT에 질문을 던졌습니다.


프롬프트 작성시 특별한 규칙은 없습니다. 요즘 AI는 다 대화형이기 때문에 상황을 잘 설정해서 질문을 잘 하는게 핵심인 것 같습니다.


ChatGPT 프롬프트 예시)

이러이러한 사이트에서 데이터를 크롤링 한다.
1분마다 웹페이지를 가져오고, csv파일에 저장한다.
파싱할 데이터는 개표율, 각 후보별 득표수이다.


일단 이정도 수준으로만 물어봐도 기본 뼈대가 되는 코드는 즉시 얻을 수 있습니다.

가져와서 빌드해보니 실행은 잘 되었지만 특정 html태그를 찾지 못하더군요.

그래서 이 부분만 제가 직접 해당 웹사이트에 들어가서 html태그를 찾아낸 뒤 그걸 코드에 입력해 줬습니다.


프로그램을 실행하고 몇 시간 뒤, 아래와 같이 시간대별 득표 수 데이터 목록을 얻을 수 있었습니다.

제목 없음.png



이렇게 데이터는 프로그램으로 자동 수집하였고 그래프를 그리는 부분은 직접 구글 스프레드시트에서 작업했습니다.

결과는 다음과 같습니다.


제목 없음6.png




제목 없음5.png


전체 코드는 100줄도 안될만큼 짧고 간단합니다.

웹사이트 다운로드 기능은 HtmlAgilityPack 이라는 라이브러리를 사용하였습니다.

크롤링 프로그램은 처음 만들어보는 거라 어떤 라이브러리를 써야 할지 몰랐는데 ChatGPT로 기본 뼈대 코드를 빠르게 얻을 수 있어서 약 15분 정도만에 만들 수 있었습니다.

만약 구글 검색으로만 작업했다면 완성은 할 수 있었겠지만 그래도 이렇게 빠른 시간안에 완료짓지는 못했을 것 같습니다.


AI를 쓰면 기본 뼈대 코드를 빠르게 받을 수 있다는 것이 큰 장점인 것 같습니다. 아무리 경력이 많은 프로그래머라 할지라도 생소한 분야의 코딩을 할 때는 자료조사가 필요한데 이 부분을 아주 빠르게 파악할 수 있었습니다. 마치 그 분야의 경력자와 같이 페어 프로그래밍 하는 느낌이 들었습니다.


그리고 이렇게 기본 베이스가 되는 코드를 받고 난 후 디테일 한 부분은 사람이 직접 작업하는게 편하다고 느꼈습니다. 아직까지 AI가 스스로 오류를 찾아내고 수정하는 일 까지는 할 수 없기 때문입니다. 따라서 AI를 통해 컴파일, 실행까지 다 되는 코드를 받았다고 할지라도 그걸 검수하고 오류를 수정하는 과정은 꼭 필요합니다. 그래서 오히려 AI시대에 더욱더 프로그래머의 코딩 능력, 분석 능력이 중요해진 것 같습니다.


전체 소스코드는 다음과 같습니다.(C#)

https://gist.github.com/sunduk/fdc42fdeb6bc35423176d404a13f9564







keyword
작가의 이전글AI의 일자리 위협?