요즈음 들어 귀찮이즘으로 만사를 내 팽개쳐두고 있는데, 블로그를 방문하는 많은 분들이 Python Web Crawling 에 질문을 많이 주시고, 또 방문 로그를 보아도 대부분 Web Crawling 으로 접속을 많이 하시는 듯 하여, 그 후속편을 살짝쿵~ 써보려고 자판을 두드려 보려고 합니다. 혹시 크롤링이 어떤 것인지 잘 모르시는 분은 아래 링크를 한번 보시면 도움이 되시리라 봅니다.
[PYTHON 3] Tutorials 24. 웹 크롤러(like Google) 만들기 1 - How to build a web crawler
[PYTHON 3] Tutorials 25. 웹 크롤러(like Google) 만들기 2 - How to build a web crawler
예전에 간략히 다룬 웹 크롤러는 블로그 스킨을 바꾸는 과정에서 태그가 조금 변형이 생겨 약간의 문제가 있었는데, 이를 많은 분들이 질문을 하시곤 하였습니다. 기존 것을 수정하는 것보다 이를 보다 깊이 있게 들어가는게 좋을것 같아서 준비하였습니다. 위 2개의 링크보다 아주 쬐~~~끔 깊이있게 들어가 보도록 하겠습니다. 그럼 시작해 볼까요~?
우선 아래와 같이 에디터를 열어서 'Crawler'라는 폴더를 생성해 주었습니다. 그 안에 main.py 라고 하는 파이썬 파일을 만들었습니다. ▼
제목에서 처럼 프로젝트를 코딩을 통해 생성하려고 하기에, 폴더를 생성할 수 있게 하는 OS 모듈을 불러옵니다. ▼
그리고 새로운 프로젝트를 생성할 함수를 정의해 주겠습니다. 이름은 직관적으로 딱~! 내가 프로젝트 폴더 만드는 애다~ 라고 알수 있게 지어주었습니다. 그리고 파라미터는 당연히 폴더명을 뭘로 할 것인지를 전달받게 하였습니다. 마무리 된 함수 코드를 보면 쉽게 이해되리라 봅니다. ▼
만약 동일한 이름의 폴더가 없다면, 폴더를 생성하게 하겠다는 의미의 코드를 아래와 같이 작성하였습니다. ▼
그리고 프로젝트 폴더를 만들고 있다는 것을 코더가 알 수 있게 하기 위해 프린트를 사용하여 ' 나 지금 프로젝트 폴더 만들고 있다~~~~~' 라고 알려주게 하였습니다. ▼
만들고 있다고 알려주었으니, 만들어야겠죠? 그래~~~~써, 아래와 같이 파이썬을 이용해 폴더를 만들게 하는 부분을 넣어주었습니다. 당연히 폴더 이름은 전달받은 인자인 'directory'라는 놈으로 합니다. ▼
자~ 이제 프로젝트 폴더 만드는 함수는 다 만들었습니다. 참~~~ 쉽죠~잉.. -_-;; 이제 만들었으니 되는지 구동 시켜 봐야겠죠? 아래와 같이 함수를 호출하게 하고, 그 폴더 이름을 'creativeworks'라고 넣어 주었습니다. ▼
이제 실행을 해 주면 끄~읕. 아래와 같이 실행을 하고 나니 왼쪽에 폴더가 짜잔~~ 하고 나타나 있네요. ▼
1편은 여기까지 입니다. 느므느므 쉽죠~잉? 참고로 위 코드에서 create_project_dir('creativeworks')는 삭제를 해 주세요. 추후에 다른 함수와 연결을 하여 구동하게 할 예정입니다.
아무래도 스샷을 새로 찍어야겠네요. 말로하면 꼬~옥 건너띄고 그림만 보시는 분들이 계실테니..^^;;
위와 같이 지우면 준비는 끝입니다. 1편은 여기까지입니다........ 2편에 계~~속.. to be continued....
'Programming > Python Web Crawler for intermediate learners' 카테고리의 다른 글
Web Crawler 006 - Creating the spider - 스파이더 만들기. (4) | 2016.03.25 |
---|---|
Web Crawler 005 - Parsing HTML and Find Links - HTML 파싱 및 링크 찾기. (3) | 2016.03.21 |
Web Crawler 004 - Accelerate Crawling by avoiding repetition - 중복을 회피하여 크롤링 속도 개선하기. (0) | 2016.03.21 |
Web Crawler 003 - 링크 찾기 및 삭제하기 (Adding and deleting links) (5) | 2016.03.18 |
Web Crawler 002 - Creating Crawled files and Queue (1) | 2016.03.15 |