게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
리플분석 - 나의 리플들은 안녕하신가? (당일치기 프로젝트 OuRA)
게시물ID : programmer_9131짧은주소 복사하기
작성자 : BePositive
추천 : 5
조회수 : 580회
댓글수 : 1개
등록시간 : 2015/04/05 05:06:26
게시판에 답글을 달면 얼마나 많은 원글이 삭제될까요?

고민 게시판이나 다른 게시판에는 작성자가 글을 돌이켜 봤을 때 남겨두는 것이 불편해서 지울 수 있습니다.
특히 고민 게시판 같은 경우는 가끔 용기를 쥐어짜서 쓰는 경우도 흔하기 때문에 그런 것들은 소위 먹튀라고 말할 수도 없겠죠?

아무튼 프로그래머 게시판 뿐만 아니라, 다른 게시판을 다 아울러 내가 달은 답글들은 무엇인지, 또 얼마나 많은 원글이 지워졌는지 궁금하네요.
그래서 잠깐 프로그램을 짜 봤어요.

프로그램의 이름은 패기넘치게

오우라!

입니다. 진지하므로 궁서체입니다. 오우라(OuRA)는 'Ou Reply Analysis'의 약자이기도 하구요. 기합소리 같기도 한 병맛스런 발음이 맘에 들었습니다.
일을 크게 하고 싶진 않아서 python2, BeautifulSoup4 (ver 4.3.2)으로만 얼른 짜내 봤습니다.

일단 당일치기 뚝딱 프로젝트니 소스는 걍 막 짰어요. 리플리스트 페이지를 분석해서 CSV 파일로 요렇게 딱 뽑아내 줍니다.

스크린샷, 2015-04-05 04:11:25.png

제가 리눅스를 쓰는 관계로 스프레드시트는 조금 후줄근한 리브레오피스를 사용할 거에요.

모든 회원의 리플리스트는 공개됩니다. 그러니까, 로그인 하지 않아도 한 회원의 리플 리스트는 낱낱이 공개되죠.
데스크탑 사이트는 http://www.todayhumor.co.kr/board/myreply.php?mn=<회원번호> 이구요
모바일 쪽은 http://m.todayhumor.co.kr/myreply.php?mn=<회원번호> 로 접속하면 됩니다.

여기서 회원번호는 아무 회원의 이름을 클릭해 보면 알 수 있습니다. 제 경우는 156985네요.

제가 라이브러리로 쓰는 BeautifulSoup4 자체의 문제도 약간 있는 것으로 발견되고, 또 리플리스트가 순서대로 올바르게 출력되는건지는 확실하지는 않지만, 일단 당일치기 프로젝트므로, 그냥 프로그램을 통해 추출된 CSV가 적당히 데이터를 잘 가져왔다고 가정하고 그냥 진행하죠...

또한 이런저런 분석을 더 할 수는 있겠지만, 그런 것도 조금, 아니 많이 귀찮으므로 간단한 분석만 해 보도록 하죠.

(번호가 빠지는 현상에 대한 추가 설명을 글 마지막에 덧붙였습니다.)


# 프로그래밍 게시판에 단 답글의 개수

"board" 열에는 각 게시판별 아이콘 파일의 경로를 담고 있어요. 아이콘 파일은 동일할테니, 각 게시판 별로 리플을 구분할 수 있는 좋은 재료가 됩니다. 그럼 board에 컴게 아이콘만 쫙 출력하면...

스크린샷, 2015-04-05 04:20:13.png

네, 총 98개의 답글을 컴퓨터 게시판에 달았군요. 프로그래밍 게시판이 생기기 전에는 컴퓨터 게시판도 프로그래밍 관련 질문을 올리고는 했어요.
그리고 스크린샷으로는 생략하지만, 프로그래밍 게시판에는 총 136개의 답변을 달았습니다.


# 프게 중 원글이 삭제된 경우는?
사정상 글이 삭제된 경우도 있을 수 있고, 진짜 답변만 취하고 먹튀당한 경우도 있겠죠? 그런데 그 삭제의 이유는 제가 다 알 수 없으니, 그냥 모두 '먹튀'라고 판단하겠습니다. 진짜 어쩔 수 없는 사정으로 글을 삭제하신 분께는 죄송하다는 말씀을 드릴께요.

이 경우 'title'이 '원 게시글이 삭제되었습니다'라는 내용으로 나오게 됩니다. 그러므로 필터링해서 저 문자열만 추출하면,

스크린샷, 2015-04-05 04:23:04.png

저는 3건의 먹튀를 컴퓨터 게시판에서, 그리고 10건의 먹튀를 프로그래머 게시판에서 당했군요.  그러므로 ((3 + 10) / (98 + 136)) * 100 = 5.56% 먹튀를 당했습니다. 물론 여러 다른 게시판에서도 원글이 삭제된 경우를 봤지만, 보통 다른 게시판에는 질문에 대한 답변을 올리지 않으므로 스킵하겠습니다. 5.56%면 많은 건가요, 적은 건가요?


# 나는 어느 게시판에 가장 댓글을 많이 남겼을까?

자 이제 분석스러운 분석 하나 정도는 해 보도록 하죠. 나는 어떤 게시판에 몇 개나 글을 남겼을까요?

피벗 테이블을 쓰면 되겠죠?
스크린샷, 2015-04-05 04:37:28.png

글은 대략 310개가 있는데, 역시 프로그래밍 게시판에 가장 많이, 그 다음으로 컴퓨터 게시판에 답글을 많이 달았네요.
TOP 3: 프로그래밍 게시판, 컴퓨터 게시판, 그리고 애니 게시판. 그리고 근소한 차이로 디아블로 3 게시판.
역시 제 본성이 낱낱이 드러나는 결과입니다. ㅜㅜ


# 가장 추천을 많이 받은 댓글과 가장 반대를 많이 받은 글은?
인터넷 게시판은 은 여러 사람들이 보는 곳이므로 왠만하면 어그로를 끈다든지, 요상한 댓글을 다는 경우를 자제하고 있습니다.
제가 약간의 병맛끼는 있어도 남들 상처주지는 말자는 주의지만 그래도 어쩌다 좀 기분 상하는 글을 쓸 수도 있겠죠.

최고로 추천받은 댓글과 최고로 반대먹은 댓글을 찾아 볼께요.
최고 댓글은. 크리스마스에 살짝 외로워서 미친 척하고 달은 댓글에 무려 98명이 추천을 때려 푸르딩등해진 일이 있었어요.
"한 웹툰 작가의 조건 없는 사랑 이야기( http://todayhumor.com/?animation_293400 )" 이 글이네요.

최고로 반대 먹은 댓글은...지난 해 3월쯤 프로그래머 게시판에 걍 한줄 쓴게 폭풍 반대를 받았네요.
http://todayhumor.com/?programmer_1768 그냥 기분 나쁜 감정 가질 거면 답변 자체를 안 하는 것도 좋은 대응이라 생각한 건데... 많은 분들이 반대하셔서 조금 가슴 아팠던 기억이 납니다 ㅠㅠ 총 47명이 반대 주셨습니다.

또한 모든 댓글의 추천 총수는 571회, 반대 총수는 89회입니다. 반대에 비해 추천을 많이 받은 편이죠 비율은 (571/89) = 6.42 입니다. 이 비율 지수를 회원별로 계산한다면, 그 회원의 성향을 추측할 수 있는 좋은 자료가 될 듯 하군요.

# 연도별, 시간별 댓글

제가 2011년부터 오유 활동을 했는데, 그동안 어디에 얼마만큼 댓글을 썼는지 보죠
스크린샷, 2015-04-05 04:57:32.png
2014년이 가장 잉여로운 해임을 보여 주는군요. 또한 2015년은 아직 1/3도 안 지났는데 지난 해의 1/3의 분량만큼의 댓글을 벌써 달았어요. 잉여로운 삶을 살고 있다는 반증이죠.

또한 2014년 이전에는 컴퓨터 게시판에 글을 많이 올리다가, 프로그래밍 게시판이 생긴 이후로는 프로그래밍 게시판에 댓글이 몰빵 되어 있는 것이 보이죠? 데이터는 거짓말을 안하네요 ㅠㅠ


스크린샷, 2015-04-05 05:03:44.png

전체 시간별 분포를 보니 역시 심야 시간, 특히 11시에 가장 많은 답글을 남기네요.
분석은 여기까지 하도록 하겠습니다.

대략 오우라로 얻어낸 데이터와 스프레드시트로 대략 제 오유 댓글 습관까지 낱낱이 알아보게 되었네요.
첨에 그냥 요즘 질문글 먹튀에 대해 말이 많이 나오는데, 과연 나는 얼마나 많은 먹튀를 당했을까 궁금해서 해 본 건데...
걍 당일치기 프로젝트로 해서 요만큼 하면 괜찮네요~~ 그럼 전 이만


부록: 출력로그
accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=1'...
parsing...
page 1 parsed. 14 items captured ( 322 ~ 308 )
WARN! Missing number is present: 313
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=2'...
parsing...
page 2 parsed. 13 items captured ( 307 ~ 293 )
WARN! Missing number is present: 305 299
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=3'...
parsing...
page 3 parsed. 14 items captured ( 292 ~ 278 )
WARN! Missing number is present: 281
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=4'...
parsing...
page 4 parsed. 15 items captured ( 277 ~ 263 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=5'...
parsing...
page 5 parsed. 13 items captured ( 262 ~ 248 )
WARN! Missing number is present: 259 256
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=6'...
parsing...
page 6 parsed. 15 items captured ( 247 ~ 233 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=7'...
parsing...
page 7 parsed. 15 items captured ( 232 ~ 218 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=8'...
parsing...
page 8 parsed. 15 items captured ( 217 ~ 203 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=9'...
parsing...
page 9 parsed. 15 items captured ( 202 ~ 188 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=10'...
parsing...
page 10 parsed. 13 items captured ( 187 ~ 173 )
WARN! Missing number is present: 181 177
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=11'...
parsing...
page 11 parsed. 14 items captured ( 172 ~ 158 )
WARN! Missing number is present: 171
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=12'...
parsing...
page 12 parsed. 15 items captured ( 157 ~ 143 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=13'...
parsing...
page 13 parsed. 13 items captured ( 142 ~ 128 )
WARN! Missing number is present: 141 133
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=14'...
parsing...
page 14 parsed. 15 items captured ( 127 ~ 113 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=15'...
parsing...
page 15 parsed. 15 items captured ( 112 ~ 98 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=16'...
parsing...
page 16 parsed. 15 items captured ( 97 ~ 83 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=17'...
parsing...
page 17 parsed. 15 items captured ( 82 ~ 68 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=18'...
parsing...
page 18 parsed. 15 items captured ( 67 ~ 53 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=19'...
parsing...
page 19 parsed. 15 items captured ( 52 ~ 38 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=20'...
parsing...
page 20 parsed. 15 items captured ( 37 ~ 23 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=21'...
parsing...
page 21 parsed. 15 items captured ( 22 ~ 8 )
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=22'...
parsing...
page 22 parsed. 6 items captured ( 7 ~ 1 )
WARN! Missing number is present: 5
sleep for 5 seconds

accessing 'http://www.todayhumor.co.kr/board/myreply.php?mn=156985&page=23'...
parsing...
no item found! stop crawling...
csv file saved as 'replies_156985.csv'
# 설명
한 리플리스트 페이지당 15개의 항목이 출력됩니다. 단, 마지막 페이지는 예외죠.
그런데 한 페이지당 크롤, 파싱하는 단계에서 14개, 13개 항목만 출력되는 경우가 발생합니다. 이 경우 순차적으로 숫자가 출력되지 않고 하나씩 빠지게 됩니다.

이렇게 숫자에 이가 빠지는 경우 WARN! Missing number is present: XXX XXX 출력을 시켜요.이렇게 숫자가 빠지는 경우는 2가지입니다. 위에서도 언급했듯, 오유에서 결과를 줄 때 번호가 빠져 있거나, 아니면 BS4 라이브러리가 HTML 파싱을 할 때 실수를 하기도 하죠.
BS4 실수의 예는 제 리플리스트 22번째 페이지 5번째 답글입니다. 분명 화면에는 리플이 나오는데, 이것을 BS4가 제대로 파싱하지 못하더군요.
그리고 리플리스트 표 가장 좌측을 유심히 보면 숫자가 빠져 있는 것이 보입니다. 이건 리플을 삭제해서 그런 건지, 아니면 진짜 버그인지는 잘 모르겠습니다.


# 추가
숫자가 빠지는 경우를 파악했습니다. 익명으로 답글을 달았을 경우, 내용을 보호하기 위해 로그인을 하지 않은 경우에는 그 항목은 처리하지 않습니다. 그래서 숫자가 군데군데 빠지게 되는 거죠. 오우라는 로그인을 하지 않은 상태에서 제 글을 분석하므로 그동안 익명으로 달은 댓글에 대해서는 결과를 가져 오지 못합니다.


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호