본문 바로가기
코딩 연습/파이썬 크롤링

네이버 블로그의 전체 페이지 저장하기(방법 설명)

by good4me 2022. 6. 13.

goodthings4me.tistory.com

하나의 네이버 아이디로 작성한 블로그 전체 페이지에 대해 콘텐츠를 저장하려면 글 전체보기의 목록에서 각 리스트의 블로그 주소(URL)를 추출하고, 해당 블로그 페이지를 순환하면서 카테고리, 제목, 본문 내용(글, 이미지)을 저장하면 된다.

 

 

아래 내용은 올해 초 창호 전문 기업인 (주) 케스코라는 회사에 다니는 직원(옛 동료)의 부탁으로 그 회사의 네이버 블로그(2,100여 개의 포스팅)를 내용을 추출하여 저장하는 코드를 짜본 경험을 토대로 작성한 내용이다.  

 

그 많은 블로그 페이지를 왜 받아야 하는지 물어보니, 새로 만드는 홈페이지와 블로그 내용을 연동시키기 위해 블로그 내용 분석이 필요하다고 했다.

 

파이썬으로 하나의 네이버 블로그 페이지에 대해서만 이미지와 글, 그리고 html 코드를 가져와서 저장하는 기능은 만들어봤지만, 하나의 네이버 블로그 아이디에 대해 전체 블로그 페이지를 저장하는 것은 해보지 않아서 내 실력으로 가능할지 모르겠다고 하고, 옛 동료를 도와주기 위한 목적으로 해보기는 하겠지만 기대는 많이 하지 말라고 했다.  그리고 주말부터 파이썬으로 네이버 블로그를 크롤링하는 코딩을 시작해서 에러 나면 수정하기를 반복하면서 블로그 페이지 전체를 다운로드하였다. 

네이버 블로그 전체 페이지 저장하기

케스코 블로그
케스코 블로그

 

블로그 추출 코딩 예시
블로그 추출 코딩 예시

작업하면서 가장 힘든 부분은 2,100여 개의 각 블로그 주소(URL)를 가져오는 것이었다.  네이버 블로그의 '목록 열기'로 열린 블로그 리스트를 클릭했을 때 열리는 아래의 주소와 

https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222608416656&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=&from=postList&userTopListOpen=true&userTopListCount=10&userTopListManageOpen=false&userTopListCurrentPage=1

 

good4me.co.kr

 

개발자 도구를 추적하고, 분석해서 우여곡절 끝에 관련 내용을 찾았는데 json인지 dict인지 분간할 수 없는 형태에 바이너리 코드인지 뭔지 알 수 없는 문자 형태까지 있어서 추출하기가 난해했다.

urllib.parse.unquote(), 정규식, 블로그 아이디와 블로그 코드를 기반으로 값을 가져와서 블로그 주소를 완성했고, for 문을 통해 블로그 페이지를 하나씩 순환하면서 기존에 만들어 둔 페이지 저장 기능과 추가적으로 만든 카테고리를 찾기 기능을 통해서 전체 내용(글, 이미지, html)을 추출하고 저장한 후 openpyxl 모듈로 그 리스트를 엑셀에 저장하였다.

추출 내용 엑셀 저장
추출 내용 엑셀 저장

 

블로그 글 제목을 폴더명으로 한 결과
블로그 글 제목을 폴더명으로 한 결과

위 탐색기 폴더를 클릭하면 네이버 블로그 글과 이미지, html 형태로 저장된 파일이 보인다.

 

추출 결과
추출 결과

※ 추출한 결과는

  • 전체 추출 용량은 10.5GB (엄청난 양임)
  • 폴더 1,554개
  • 파일 수 25,513개

 

잘은 모르지만, 네이버 블로그의 페이지 접속 URL 형태는 여러 개인 듯하다. 그리고 for 문 순환으로 페이지 저장 시 특정 시점의 블로그 소스코드가 달라져서 에러가 발생한다. 이런 부분이 블로그 크롤링할 때 가장 어려운 부분인 것 같다.

개발 고수님들은 금방 해결할 수 있는 문제라도 나 같은 사람에게는 해결이 쉽지 않은 것이기에 때론 그들에 대한 존경심은 이런 때 더더욱 느껴지는 것 같다.

 

 

댓글