[개발자를 위한 파이썬] 파이썬 웹 크롤링 구현 후기
안녕하세요.
티스토리 주인장 성스러운기사입니다.
이번 시간에는 한빛미디어에서 "나는 리뷰어다 1월 이벤트"로 받은
"개발자를 위한 파이썬" 도서에 대해 리뷰를 남겨보도록 하겠습니다.
우선, 이 책은 단순하게 파이썬에 대한 설명과 이용하는 방법만이 아닌,
파이썬을 통해 개발할 수 있는 다양한 주제를 설명해주고 있습니다.
예를 들면, 데이터 시각화 처리 방법이나 웹 크롤링, API 이용 방법, 슬랙 봇 만들기 등 다양한 주제로 설명해주고 있습니다.
"잉? 한권의 도서로 저 모든 것 들을 설명할 수 있나? 대충 만들 수 있는 것 들만 적어둔거 아니야?" 라고
생각하실 수 있습니다.
저도 처음에는 "대충 설명하고 말겠지" 라고 생각하면서 도서를 읽었습니다.
그런데 도서의 내용을 보니 꼼꼼하게 설명한 것도, 대충 설명한 것 도 아닌,
개발함에 있어 어렵지 않고 쉽게 설명해 줌으로써 설명 한번으로
해당 내용을 이해할 수 있도록 구성되어 있습니다.
사실, 저는 파이썬 관련 도서를 여러권 읽어 보기만 하고, 실제로 만들어본 프로젝트는 몇개 없습니다.
그 마저도 단순한 테스트용 프로그램과 "국민대학교 개발자 OSS 캠프"에서 하루만에 만든 프로젝트밖에 없었습니다.
라즈베리파이 제어인데, 사실상 저 코드가 끝...
그러다보니 사실상 파이썬으로 쓸만한 프로그램을 만들 수 없었습니다...!!
그런데 이 책을 읽어보니, 단순하게 지루한 내용으로 설명하지 않고, 중요한 내용만 이해하기 쉽게 콕콕 설명하고 넘어가기에,
그동안 파이썬으로 개발하면서 이해가 안갔던 부분이나 이해가 어려웠던 부분들이 "펑" 터지듯이 이해가 가더군요.
"에이, 그냥 전에 파이썬 도서를 읽어보고 만들어봐서 그런거 아니야?" 라고 생각하실 수 있습니다.
이렇게 쉽게 이해가 갈 수 있는데 도움을 준 것은 바로 코드 예제였습니다.
코드가 재미있게 작성되어있고, 그 덕분에 이해하기가 쉬웠습니다!
Hatune Miku부터 시작하여 리스트를 설명할 때 오버워치를 비유하여 코드가 작성되어 있습니다.
그 덕분에 오버워치를 생각하면서 해당 부분을 읽으니 자연스럽게 이해가 쉽게 갔습니다!
(물론 오버워치나 하츠네 미쿠를 모르신다면 단점이 될 수 있겠네요...!)
본 도서를 읽은지 하루만에 저는 바로 "한빛미디어 도서 크롤링 봇" 을 만들어 보았습니다.
책에 나온 모듈을 이용하지는 않았지만, 다른 모듈을 이용하여 책에 나온 설명을 참고하며 저만의 스타일로
크롤링 봇을 만들었습니다.
"에이, 포스트들 보니까 그동안 파싱해오던데, 이미 할 줄 알아서 만들 수 있었던거 아니야?" 라고 생각하실 수 있습니다.
아무리 그동안 제가 파싱을 해왔다 한들, 파이썬 스트링 함수도 모르기에 제가 쓰던 방식은 아예 사용하지도 못하기에,
오로지 책에 나온 방식 그대로 따라하여 개발했습니다.
저는 이전부터 파싱을 전문적으로 많이 해왔지만 항상 같은 방식을 이용해왔습니다.
그렇기에 원하는 정보를 가져오기 위해 항상 아래와 같이 작업을 하였습니다.
원하는 문자열 위치 받아옴 -> 문자열 위치 이전 제거 -> 원하는 정보의 문자열 저장 -> 저장한 문자열 위치 이전 제거
이렇게 보면 단순해 보이지만, 실제로는 작성할 때 마다 무언가 비논리적 이라는 생각이 들었습니다.
그리고 이 책을 보고나서, "이거 그동안 내가 해온 방식은 그냥 갖다 버려야 겠는데?" 라는 생각으로 바뀌었습니다.
책에는 원하는 데이터를 가져오기 위해 xpath를 이용하여 크롤링을 하였는데,
그냥 바로 원하는 태그의 xpath를 구해 대입만 하면 끝나는 것을 보고 저는 깜짝 놀랐습니다!
그렇게 저는 새로운 xpath를 통한 크롤링을 배우게 되었고, 여기서 xpath 대신 유사한 selector을 이용하여 개발하였습니다.
책에서는 xpath를 대입하여 크롤링 했다면, 저는 selector을 대입하여 크롤링을 하였습니다.
그리고 책에 나온대로 리스트를 만들고, selector을 이용하여 데이터를 구한 뒤, 만들어둔 리스트에 저장하고, csv로 출력한 뒤
페이지가 더 있는지 확인하여 없을 때 까지 반복하는 방식으로 구현했습니다.
퀄리티를 높이기 위해서 다양하게 만들다보니 한두시간 정도 더 걸렸던 것 같습니다.
만들어진 결과는, 매우 성공적이였습니다!
한빛미디어 사이트의 도서중, 프로그래밍 카테고리에 있는 모든 도서의 제목과 작성자, 코드를 리딩하고 csv파일로
작성하는 프로그램이 완성된 것이었습니다.
여기에서 selector를 이용한 방식만 제외하면, 이 모든 과정은 정말 "개발자를 위한 파이썬"에 나온 설명만을 통해 구현하였습니다!
(크롤링 후 csv로 저장할 때 인코딩하는 것만 따로 구글링했습니다...!)
파이썬으로 제대로 된 프로젝트 하나 못만들어 봤는데, 이 책 하나만으로 이러한 프로그램을 만들 수 있어서 되게 행복했습니다 ㅋㅋ
원래는 책에 나온 Flask와 슬랙 봇 내용을 가지고 카톡 챗봇이나 슬랙 봇을 만들어 볼까 하였는데,
PHP로 만들고 있는 챗봇과 겹치기도 하고, 무엇보다 현재 가상서버에서는 nodeJS를 돌리고 있어,
서버를 잠깐 멈추고 Flask를 돌리기에는 애매하기에 나중에 시도해보려고 합니다!
여튼 본 도서 덕분에, 이제 저는 파이썬이라는 언어도 이제 자신있게 다룰 수 있게 됬고, 첫 파이썬 작품이 나왔습니다.
언뜻 보기에는 단순한 홍보용 글처럼 보일 수 도 있겠지만, 절대 다른 금전적 이득없이,
본 책을 읽고 개발하면서 도움이 된 내용 그대로 작성하였습니다.
여러분들도 "개발자를 위한 파이썬" 이라는 도서를 통하여 파이썬을 이용하는데 있어 큰 도움이 되기를 바랍니다!
[개발자를 위한 파이썬] 도서 자세히보기
GitHub 소스코드