9. 1 2 3
실시간 네이버 웹툰 인기순
랭킹 (전체/여성/남성)
수집 항목들
네이버 웹툰 정보 네이버 웹툰 에피소드 별
베스트 댓글
2. 데이터 수집
스파크 기반 네이버 웹툰 댓글 분석
네이버 웹툰 (https://comic.naver.com/webtoon)
수집 초반 4월 경에는 robots.txt 없었지만 최근에 생긴 것으로 확인됨
크롤링
10. 2-1. 크롤링 방법 - 웹툰 정보 및 베스트 댓글
수집한 웹툰 정보 기반으로 에피소드 별 베스트 댓글 수집
12. 1차 수집일 : 2023-05-16
2차 수집일 : 2023-07-08
title_id, 작품정보, 작가, 평점, 조회수,
회차수, 장르, 연재일
2-3. 네이버 웹툰 정보
성인 웹툰 제외한 모든 주간 웹툰(월~일) 정보 수집 (CSV)
(1) 요일별 전체 웹툰에서 웹툰 고유 번호 title_id 수집 (2) title_id로 웹툰 상세 페이지 접속하여 웹툰 정보 수집
(3) 크롤링한 웹툰 정보 CSV 파일로 저장
13. [S3 Bucket] 폴더명: title_id
파일명 : (title_id)_(epi_no)_best.json
댓글 정보 (json) : 로그인id, 닉네임, 댓글, 답글
수, 좋아요 수, 싫어요 수, 작성일
2-4. 네이버 웹툰 베스트 댓글
수집한 웹툰 정보 기반으로 에피소드 별 베스트 댓글 수집
utf-8인코딩
베스트 댓글 수집 : 5/17 ~ 6/14
오류난 회차 추가 수집 : 6/18 ~ 6/23
14. 2023-05-15
~ 2023-07-08
전체/여성/남성,
titleId, 랭킹 순위,
수집한 날짜, 수집한 시간
2-5. 실시간 인기웹툰 랭킹 수집
모든 주간 웹툰(월~일) 정보 수집 (JSON)
(1) 웹툰홈의 실시간 인기웹툰에서
전체, 여성, 남성 인기순 웹툰을 1시간마다 수집 (2) 크롤링한 웹툰 랭킹 정보를 JSON 파일로 저장
[S3 Bucket] 폴더명: date_ymd
파일명 : ranking_{date_hour}.json
15. 567개의 웹툰 정보
55일의 랭킹 정보
563,197개의 베스트 댓글 정보
총 수집
데이터
1
3
2
스파크 기반 네이버 웹툰 댓글 분석 2. 데이터 수집
16. 3. 데이터 정제
및 분석
3. 데이터 정제 및 분석
스파크 기반 네이버 웹툰 댓글 분석
17. 웹툰 정보
3-1.전반적 흐름 (데이터 정제 및 분석)
JSON → CSV : 로컬 환경의 Spark 이용
CSV → Parquet : Amazon EMR 이용
json파일을 pyspark(로컬)로 word count하여 엑셀 파일(xlsx) 추출
csv 변환, 칼럼명 통일, utf-8 인코딩
s3 (분석용 버킷) 업로드
웹툰 정보 : 직접 Amzaon S3 (분석용 버킷)에 업로드
댓글 : Spark로 JSON → CSV → Parquet 형식으로 변환 후 Amazon S3(분석용 버킷)에 업로드
랭킹 정보:
댓글 분석_워드클라우드 : 로컬 Spark로 댓글 JSON 파일을 읽어 WordCloud
댓글 분석_감정분석: GCP로 댓글 CSV을 가져와 Cloud Natural Language API로 감정분석
(수집용 버킷) (분석용 버킷)
댓글 감정 분석
댓글
랭킹
ranking
comments
18. 3-2. 감정 분석
크롤링으로 수집된 모든 댓글에 대한 감정 분석하기
수집된 댓글들이 모인 Excel파일을
활용(읽기, 쓰기, 저장)하는
vscode에 GCP(Google Cloud
Platform)를 연동
GCP에서 감정분석을 위해
Cloud Natural Language
API를 활용
Sentiment Analysis with
GCP를 통해 감정분석
19. 3-3. Wordcloud
Wordcloud로 댓글별 자주 등장하는 단어 시각화하기
<에피소드 1>
이것은 테스트 댓글입니다
이것은 test 댓글입니다
<에피소드2>
이것은 test1 댓글입니다
이것은 테스트 댓글입니다 ㅋㅋㅋㅋ
<에피소드3>
이것은 테스트 댓1글입니다
이것은 테스트 댓글입니다 😎
이것은 테스트 댓글입니다
이것은 댓글입니다
이것은 댓글입니다
이것은 테스트 댓글입니다
이것은 테스트 댓글입니다
이것은 테스트 댓글입니다
이것 테스트 댓글
이것 댓글
이것 댓글
이것 테스트 댓글
이것 테스트 댓글
이것 테스트 댓글
(이것, 6)
(테스트, 4)
(댓글, 6)
수집한 에피소드별
베스트댓글을
웹툰별로 합친다
자음, 모음, 숫자,
영어, 이모티콘을
댓글에서 제거한다
각 명사가 몇 번
등장했는지
count 한다
이것은 테스트 댓글입니다
이것은 test 댓글입니다
이것은 test1 댓글입니다
이것은 테스트 댓글입니다 ㅋㅋㅋㅋ
이것은 테스트 댓1글입니다
이것은 테스트 댓글입니다 😎
Konlpy를 이용해
댓글에서 명사만
추출한다
count한 결과를
바탕으로 웹툰별
wordcloud를 생성한다
34. 아쉬운 점
및 개선점
아쉬운점
개선점
더 많은 데이터를 수집하지 못한 점과
ETL 자동화 하지 못한 부분이 아쉽다.
파이프라인을 고도화하지 못한 것과
클라우드 보안 측면에서 아쉽다.
더 다양한 기술들을 활용해보고 싶었
는데 활용해보지 못해 아쉽다.
1
2
3
스파크 기반 네이버 웹툰 댓글 분석 6. 프로젝트 후기
35. 프로젝트
후기
배운점
느낀점
데이터 수집부터 적재, 그리고 시각화까지 일련의 과정을
경험해볼 수 있어서 좋았다. 한편, 더 많은 데이터를 수집
하여 ETL, ELT 과정을 고도화해봤으면 더욱 의미있었을
것 같은데 이에 대한 아쉬움이 크다.
팀내에 사정으로 4월에 주제를 바꾸게 되어 시간이 부족
했음에도 나름의 결과물을 얻어서 좋았다. 기회가 된다면
베스트 댓글뿐만 아니라 전체 댓글로 프로젝트를 확장해
보고 싶다.
프로젝트 진행하면서 막힌 부분이 자주 있어서 힘들었지
만 원하는 결과를 얻어낸 것 같아 뿌듯하다. 팀원들이 뛰
어난 덕분에 프로젝트를 잘 마무리할 수 있었다.
1
2
3
스파크 기반 네이버 웹툰 댓글 분석 6. 프로젝트 후기
36. 감사합니다
2023 BOAZ 제 18회 컨퍼런스
스파크 기반 네이버 웹툰 댓글 분석
BOAZ ADV
Tooniverse 팀