0401 회의 이후, 나는 MLBPARK와 루리웹닷컴에서 주52시간 관련 게시물들을 크롤링하는 역할을 맡았다. 아직 네이버 뉴스 댓글 크롤러를 업그레이드하지는 못했지만, 일단 이를 활용해 필요한 데이터를 쌓는다.
사전 작업으로, 어떤 데이터를, 어디에서 얻어야 하는지 파악한다. 이후, 필요한 정보를 얻기 위해 내가 만들 크롤러가 어떤 링크들을 타고 돌아다녀야 하는지, 그 링크들의 URL 구조가 어떻게 되는지 파악한다.
# 어떤 데이터를 얻어야 하는가?
우선 MLBPARK 사이트에서 야구 관련 게시물이 아닌 글들은 전부 BULLPEN 게시판에 올라와 있다. 따라서 MLBPARK BULLPEN 게시판이 정보를 얻을 곳이다.
첫째, MLBPARK BULLPEN 게시판에서,
둘째, '주52시간'을 검색하면 나오는,
둘째, 2017년 2월까지의 게시물들에서,
넷째, 회의를 통해 확정한 스키마에 맞게 관련 정보를 수집한다.
"커뮤니티 이름, 글 제목, 글 작성 시간, 글 작성자, (있다면) 추천수/비추천수, 댓글 수"
다만, 추가적으로 필요할 수 있을 것이라 판단되어 일단 내 작업 과정에서는 조회 수와 댓글 내용도 함께 수집해 놓기로 했다. 조회 수의 경우, 나중에 학습 시 가중치를 줄 때 활용할 수 있을 것이라 판단했다. 댓글 내용의 경우, 댓글을 통해 의견을 개진하며 토론이 이루어지는 경우가 많아, 의미 있는 의견 정보를 뽑아낼 수 있을 것이라 생각했다. 다만, 댓글 작성자나 시간은 수집하지 않는다.
# 어디에서 데이터를 얻어야 하는가?
명확하다. MLBPARK BULLPEN 게시판이다. 검색 시 화면이 달라지는 것도 없다. 다만, '주52시간'과 '주 52시간'과 같이 띄어쓰기 여부에 따라 검색 결과가 달라지는지 궁금했다. 그러나, 아래와 같이 동일한 검색 결과가 나오며, 주52시간이라 검색해도 '주 52시간'이 포함된 게시물이 나오는 것으로 보아, 띄어쓰기는 크게 상관이 없는 것 같다.
이전과 달리 확인할 것이 늘었다. 댓글 수와 내용을 가져오기 위해 Selenium을 사용해야 할 것인지의 여부이다. (당연하겠지만) 댓글이 동적으로 변화하는 컨텐츠인지 확인해보기 위해 하나의 게시물을 눌러서 들어가 봤다.
개발자 도구로 확인한 결과, JavaScript function이 있고, 댓글 칸을 누르자 로그인 후 작성하라는 메시지가 뜬다. 함수에 들어 있는 부분이다. 댓글 정보는 계속해서 바뀔 수 있다. 따라서 댓글 정보를 가져오려면 Requests로 GET 요청을 보내서는 안 된다. Selenium을 활용하자.
아, 한 가지 더! 네이버 뉴스 댓글란과는 달리, 댓글을 다 보기 위해 버튼을 누를 필요는 없다.
정리하면, 최종적으로 내가 진행해야 할 작업은 다음과 같다.
1. MLBPARK BULLPEN에서 '주52시간'을 검색한다.
2. 검색 결과 페이지를 끝까지 순회하며 게시물들의 링크를 가져온다.
3. 각 게시물 페이지로 들어가 해당하는 정보들을 가져 온다.
내 크롤러는 '주52시간'으로 검색된 게시물들의 검색 결과 페이지와, 각 게시물들의 링크를 돌아다녀야 한다.
# 검색 결과 링크 URL 구조 확인
우선, MLBPARK BULLPEN에서 '주52시간'을 검색했을 때 나오는 URL 구조를 확인한다.
http://mlbpark.donga.com/mp/b.php?select=sct&m=search&b=bullpen&select=sct&query=%EC%A3%BC52%EC%8B%9C%EA%B0%84&x=0&y=0-
크게 달라진 것은 없다. 인코딩도 utf-8이고, query 부분만 바꿔주면 된다. 페이지가 바뀔 때 검색 화면 URL 구조가 어떻게 바뀌는지 확인하기 위해 2페이지, 3페이지를 클릭해 본다.
http://mlbpark.donga.com/mp/b.php?p=31&m=search&b=bullpen&query=%EC%A3%BC52%EC%8B%9C%EA%B0%84&select=sct&user=
http://mlbpark.donga.com/mp/b.php?p=61&m=search&b=bullpen&query=%EC%A3%BC52%EC%8B%9C%EA%B0%84&select=sct&user=
페이지 별로 검색 결과가 30개씩 표시되고, 페이지를 넘길 때마다 URL의 'p=' 부분이 바뀐다. 공식 적용도 지난 번의 예와 다를 게 없다. 수만 30으로 바뀔 뿐. 페이지를 나타내는 부분이 URL 가운데에 있지만, 이 부분을 페이지 부분을 뒤로 넘겨 봐도 검색이 된다.
이 외에 다른 부분들을 확인했다. MLBPARK BULLPEN 게시판에는 아래와 같이 '이전 게시판' 메뉴가 있다.
현재 게시판에서 나오지 않는 예전 게시물들을 보여주는 모아놓은 게시판인 것 같다. 이 게시판의 경우, URL에서 bullpen 뒤에 2, 3, 4 등 숫자만 붙여주면 된다. 일단 우리가 얻기로 한 데이터의 기간은 2017년 초이므로, 이전 게시판을 갈 일은 없을 것 같다. 이후 프로젝트를 하면서 그 이전의 글들도 궁금하다면 변경할 수 있다.
최종적으로 확인한 검색 결과 페이지의 URL 구조는 다음과 같다.
https://mlbpark.donga.com/mp/b.php?select=sct&m=search&b=bullpen[이전게시판 번호]&select=sct&query=[검색어]&select=sct&user=%p=[게시판 페이지 번호]
'AI > 정책 댓글 반응 NLP' 카테고리의 다른 글
[1] 커뮤니티 게시물 크롤러_1. MLBPARK_2. 코드 수정 및 마무리 (0) | 2020.04.05 |
---|---|
[1] 커뮤니티 게시물 크롤러_1. MLBPARK_1. 데이터 적재 (0) | 2020.04.03 |
[1] 네이버 뉴스 댓글 크롤러_ver1.5_검색페이지 확대 (0) | 2020.04.01 |
[1] 네이버 뉴스 댓글 크롤러_ver1_4. 데이터 저장 및 마무리 (0) | 2020.04.01 |
[1] 네이버 뉴스 댓글 크롤러_ver1_3. Selenium 이용 (0) | 2020.04.01 |