정치인들은 몰라도 우리같은 시민들은 자신의 정치적 견해를 입 밖으로 잘 내뱉지 않는다.
주로 사람들은 디시인사이드나 FM코리아, 스레드와 같은 커뮤니티에 자신의 정치적 견해를 내뱉곤 한다.
나는 갑자기 특정 기간, 예를 들어서 2월 1일부터 2월 4일까지의 사람들의 주요 관심사가 정확히 어떤 대상에 어떤 비중으로 분포되어있는지 알고 싶어졌다.
글을 긁어오는 방식은 간단하다. 우리가 브라우저로 웹페이지를 보는 것은 해당 url에다가 get 요청을 하는 것과 같은데 코드로 get 요청을 하면 된다. 시각적으로 보는 것만 다를 뿐이지 서버 입장에서는 사실 같은 행동이다.
다만, 다른 것이 있다면 나같이 이렇게 긁어가려는 사람들을 서비스 입장에서는 좋게 보지 않을 것이다. 10000명의 유저가 1번 봐서 나오는 10000개의 요청과 1명의 유저가 10000번 보는 것은 그들 입장에서 영양가가 다를테니까 말이다.
1명의 유저가 짧은 시간에 많은 요청을 하게 되면 '봇'으로 몰리는 경우가 있다. 파이썬에서 request 로 데이터를 가져오게 되면, 우리가 일반적으로 웹브라우저에 들어갈때 들어가는 User-Agent 헤더가 달라지게 된다. 그렇기 때문에 이 부분은 꼭 브라우저에서 접속하는 것과 비슷하게 작성해야 한다.
그렇게 해보니 약 30 * 8000 그러니까 24만회의 리퀘스트동안 블로킹은 발생하지 않았다. 이렇게 수집한 데이터는 무엇을 위해서 쓸 것이 아니라 공개된 정보에 접근한 것이고, 개인적으로 그냥 궁금해서 한 것이기 때문에 판례에 따르면 불법은 아니다.
각설하고, 그렇게 웹 페이지를 불러와서 파싱... 이렇게 해서 정해진 형식으로 정리한다. 나는 xlsx 파일이 편하다고 생각해서 이를 선택하였다. 그렇게 해야 코드가 아니라 그냥 뷰어에서도 보기 편하기 때문이다.
이제 이 데이터 중 사람들의 의견이 가장 직관적으로 보이는 곳.. 제목의 공백과 줄바꿈 문자를 모두 없앤다음에 KONLPY 한글형태소 분석 라이브러리를 통해서 명사를 추출한다. 형용사는 사람들의 감정이기 때문에 이것은 필요없기도 하고 'X발' 과 같은 명사가 어차피 감정을 보여준다. '존X'도 있고 말이다.
그렇게 해서 나온 명사 리스트에 원하는 조건을 적용한다음에 이를 워드 클라우드 이미지로 만든다.
그 결과 나온 워드 클라우드 이미지로 다음과 같은 것들을 유추해볼 수 있다.
'중국, 화교, 짱깨' -> 중국에 대한 반중 정서가 심화되었다.
'X발, 존X, 사형, 새X' -> 사람들의 감정이 격화된 상태이다.
'윤석열, 윤카, 민주당, 변호인, 윤통, 우파, 긴급 등 ' -> 야당과 대통령에 대한 관심도가 높다
'연예인 이름들' -> 부수적인 이슈임을 알 수 있다.
때문에 이렇게 게시글을 싹 불러와서 워드클라우드 이미지로 뽑기만 해도 사람들의 관심의 이동을 한눈에 알 수 있다.