본문 바로가기
북리뷰

파이썬으로 웹크롤러 만들기 _ 보석 원석 찾기

by 제너러스라이프(경제) 2021. 7. 20.

1. 보석을 알아보기 전엔 그저 돌덩어리일 뿐이다.

 ㅜ누구나 보석 원석을 알아보기 위한 능력을 바란다. 남들에겐 그저 돌덩어리일 뿐이지만 조금의 가공을 통해 보석으로 만든다면 엄청난 가치를 더한 돌덩이로 변신이 가능하다. 파이썬은 일반인이 가장 이해하기 쉬운 프로그래밍 언어이다. 자바, C언어 등의 프로그램 언어는 코딩을 전문적으로 배운 사람만 이 다룰 수 있는 언어였다면 파이썬은 아주 단순한 개념과 정의를 이해한다면 일반인도 1년 안에는 충분히 다룰 수 있는 언어다. 그리고 세상에는 보석 원석과 같은 가공되지 않은 정보들이 가득하다. 그리고 코로나 19로 인한 패러다임의 변화로 인하여 정보의 가치는 더욱 가파르게 오르고 있다. 하지만 우리가 정보를 바라보는 인사이트와 가공할 수 있는 툴을 다루지 못한다면 그저 시간에 따라 흘러가는 무의미한 존재일 뿐이다. 이 정도로도 우리는 파이썬을 꼭 배워 웹 크롤링의 기술을 습득해야 하는 충분한 이유가 될 것이다.

 기계공학 전공 혹은 심지어 문과를 전공한 사람조차도 현재 직장인의 월급에 만족하는가? 앞으로의 집값과 교육비 , 다른 부가가치 창출 없이 평생직장의 개념으로 살아갈 수 있다고 보는가? 세상은 이미 많이 변했고 평생직장은 코로나 19 발생 시기 훨씬 이전에 없어진 개념이다. 회사는 그저 나와 비즈니스 관계로 일정 부분의 일을 해주면 돈을 주는 관계일 뿐 같이 성장하거나 내 인격체의 하나로 보는 멍청한 생각은 접었으면 좋겠다. 물론 회사를 직접 경영하는 경영진이라면 이야기는 다를 수 있다. 하지만 일반 임금 이외에 다른 보상이 없는 임직원이라면 절대 그런 생각은 없이 충실히 받는 만큼만 일하기를 추천한다.

 자 그럼 왜 우리는 파이썬을 이용하여 웹 크롤러를 만들어 정보를 가공하여 월급 이외에 부가가치를 창출해야 하는지 이해했을 것이라고 생각하고 이 책의 내용 일부를 살펴보도록 한다.

 

2. 우리가 다룰 수 있는 웹 크롤러

 웹에 존재한다면 그것이 어떤 형태이든 데이터로 추출할 수 있다. BeautifulSoup, 셀레니움, 테서랙트 등 강력한 파이썬 라이브러리 사용법과 함께 API, 인증, 이미지 및 텍스트 인식, 로그인 처리 등 웹 크롤링의 기초부터 고급 기법까지 종합적으로 다루는 유일한 책. 실제 업무와 생활에 적용할 수 있는 예제가 가득하다. 2판은 예제를 추가 및 업데이트했고 모던 웹에서 거의 모든 종류의 데이터를 가져오는 방법을 포괄적으로 다룬다

 1부는 파이썬과 함께 BeautifulSoup, 스크레이피 같은 라이브러리를 이용하여 아주 간단하게 웹 크롤러를 만들어보며 시작한다. 그리고 API를 이용한 수집, 데이터를 MySQL로 저장하는 방법, CSV, PDF, 워드 파일을 분석하는 방법까지 필요에 따라 다양한 라이브러리를 활용하여 웹 크롤러를 구현하는 방법을 소개한다.

 2부는 웹 크롤링을 둘러싼 더욱 흥미로운 주제와 기법을 다룬다. 웹에서 가져온 지저분한 데이터를 정돈하고 정제하는 방법(오픈리파인), 자연어 처리(NLTK), 폼과 로그인 뚫기(requests), 자바스크립트로 만든 동적 페이지 수집하기(셀레니움), 이미지 처리(필로) 및 텍스트 인식(테서랙트), 웹사이트 테스트(unittest), 원격 크롤링(토어) 등 고급 기법과 라이브러리 사용법을 살펴본다. 특히 텍스트 인식은 CAPTCHA, 즉 자동 가입 방지 문자를 우회하는 데 유용하며, 크롤링을 막는 방해물을 뚫기 위한 ‘사람처럼 보이기’ 기법을 소개하여 일반인이 맞닥트릴 수 있는 벽을 자세히 해소한다.

오늘날 데이터가 넘쳐나는 웹에서 웹 크롤러로 할 수 있는 일은 무궁무진하다. 필요한 것은 약간의 파이썬 프로그래밍 능력 하나뿐이고 나머지는 이 책에서 배울 수 있다. 특히 본인도 참고한 책이지만 기본적인 명령어에 대한 내용은 “혼자 공부하는 파이썬"이란 책을 활용하기 추천한다. 크롤링을 적용하여 업무를 자동화하고 생활 속에서 유용한 통찰을 찾는 데 이 책이 큰 도움이 단다. 복잡 다양한 웹 세상에서 우아하게 데이터를 수집하고 싶은, ‘일상의 데이터 분석가’를 꿈꾸는 이들에게 이 책을 권한다.

 

3. API을 이용하여 검색어 추출 이후 크롤링 그리고 CVS 저장까지

 이 책을 처음 받았을 때는 다소 어려운 단어로 넘쳐났다. bs을 알고 싶어서 크롤러를 찾았지만 크롤링을 하기 위해선 알아야 하는 문턱이 한 개 더 있었다. 바로 HTML의 기본 문법이었고 그것을 모르면 내가 원하는 정확한 크롤링을 하지 못하는 구조였다. 어찌 보면 당연한 이치일지도 모른다는 생각을 했다. 내가 보는 것이 아닌 내가 만든 규칙 안에서 프로그램이 자동으로 데이터 수집하는 것이 크롤링인데 규칙을 만들기 위해 대상을 모른다는 것이 말이 안 되기 때문이다.

이 책에는 다양한 크롤링 기법이 있다. 기본적인 bs의 객체 선택부터 시작해서 정규표현식 / 람다 표현식 / 단일 도메인에서의 활동 / 검색 / 링크 / 다양한 크롤링 분석 기법 등등.. 추가적으로 수집한 크롤링 datacsv / mySQL 등으로 데이터 다루는 기법도 표현되어 있어 아주 알찬 책이라고 생각된다.

 본인은 이 책의 내용을 활용하여 모 사이트의 api을 이용하여 다양한 웹 사이트를 추출하고 각 사이트별 원하는 정보를 bs을 이용하여 수집한 뒤 개별 csv data로 저장하는 것까지 실습하였으며 책 한 권으로 그리고 우리가 언제나 잘 활용하는 구글링을 통하여 혼자 충분히 가능한 점을 알려주고 싶다.

 추가적으로 책을 떠나서 코딩을 배울 때 가장 중요한 기술은 구글 검색이다. 구글 검색에 내가 궁금한 명령어를 되도록 영어로 작성하여 검색하면 웬만한 코드는 예제로 찾을 수 있어 활용이 쉽다. 파이썬의 가장 큰 단점은 다소 처리속도가 늦는다는 점이다. 이 책은 그 와중에서도 가장 빠르게 처리할 수 있는 길을 설명한다. 웹 검색을 통해 정보를 찾고 책에서 한번 더 확인해서 내제화 한다면 진정한 웹 크롤러 전문가가 되지 않을까 생각한다.

댓글