본문 바로가기

crawler

Web Crawler 013 - Initializing first spider - 첫 스파이더 구동하기. 자, 이번 시간부터는 본격적으로 웹 사이트 크롤링을 해 보도록 하겠습니다. 그러기 위해서 이제까지 만들어 둔 함수 및 파일들을 한 곳에서 일괄적으로 다루어야 함으로 main.py 라는 파일을 만들도록 하겠습니다. 그리고는 아래와 같이 파일들도 불러오고 쓰레딩(threading) 관련 모듈도 불러 옵니다. 하나의 스파이더로 처리하는 것은 비효율적이겠죠? 몇 개는 링크들을 찾는 크롤러로 활동하게 하고, 또 다른 몇개의 스파이더들은 다른 스파이더들이 찾은 링크를 타고 들어가서 또 링크를 찾고 이렇게 서로 협업을 하게 하기 위함입니다. 개략적인 내용은 쓰레딩을 lookup 해보시면 아시리라 봅니다. ▼ 프로젝트 네임을 아래와 같이 정해주었습니다. 그냥 단순하게 홈페이지 이름을 기입하였습니다. 지금은 이렇게 써 .. 더보기
Web Crawler 008 - Making the Spider boot up. - 스파이더 구동하기. 지난 시간에는 스파이더 클래스를 초기화 하는 과정까지 알아보았다. 이번에는 이 스파이더 클래스를 조금 더 풍성하게 만들어 보자. 우선 이 스파이더 클래스가 객체화 될 때, self.boot(), self(crawl_page) 이렇게 2개의 함수를 호출하는 부분을 초기화하는데 넣어주었었다. 그래서 이번에는 이 2개의 함수 중 boot() 함수를 정의해 보려고 합니다. 우선 아래 이미지를 먼저 보면서 살펴보자면, boot(self) 를 정의하고 create_project_dir(Spider.project_name) 이라고 하는 부분을 삽입해 주었습니다. 이는 클래스가 객체화될때, 이전에 만들어 둔 create_project_dir() 함수를 이용해서 폴더를 먼저 만들어 주게 하려고 했는데, 여기서 이렇게 사.. 더보기
Web Crawler 002 - Creating Crawled files and Queue 이번 시간에는 지난 시간에 프로젝트(폴더)를 만드는 코딩에 이어, 웹사이트를 크롤링할 때 크롤링해야 할 웹페이지들의 URL 값을 가지고 있어야 하는데, 그렇게 하기 위해서 queue를 만들어 긁어 올 웹페이지 주소를 넣어 두려고 합니다. 이렇게 queue에 저장된 웹페이지 URL 을 가지고 다 긁어왔으면 해당 URL을 crawled 로 넘겨주어 더 이상 중복 크롤링하지 않게 하려고 합니다. 말보다는 코딩을 보는게 더 빠를거라 봅니다. 시작해 볼까요~? 히위~꼬우~! 지난 시간에 만든 부분에 아래와 같이 주석을 달아 주었습니다. 그리고 이번에 만들 부분에 주석도 함께 넣었습니다. 프로젝트 이름과, 기본 주소를 인자로 받는 파일을 만들어 줄 함수를 아래와 같이 정의하겠습니다. ▼ 기본 URL 을 가지고 어떤.. 더보기
Web Crawler 001 - Creating a New Project 요즈음 들어 귀찮이즘으로 만사를 내 팽개쳐두고 있는데, 블로그를 방문하는 많은 분들이 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 예전에 간략히 다룬 웹 크롤러는 블로그.. 더보기
[PYTHON 3] Tutorials 33. Make words counters - 2 ( words counter 만들기) 이전까지는 웹페이지에서 특정 부분을 크롤링하여 단어들을 추출하였습니다. 그러나 여기에는 특수문자 등 원하지 않는 부분도 포함되어 있었습니다. 이번 시간에는 앞에서 얻은 자료에서 원치않는 부분을 제거하는 코딩을 하도록 하겠습니다. 앞 장에서 다룬 코드는 아래와 같습니다.▼ 상기 코드에서 우선 확인을 위해 삽입한 print(each_word)를 삭제하도록 하겠습니다.▼ 또 다른 함수를 정의할 건데 start(url) 함수 내에서 호출 하도록 할 예정입니다. 그래서 아래 코드에서 처럼 clean_up_list(word_list) 문구를 삽입하였습니다.▼ clean_up_list(word_list) 함수를 정의하겠습니다.▼ start(url) 함수와 마찬가지로 원하지 않는 데이터를 뺸 자료를 담을 그릇(리스트).. 더보기
[PYTHON 3] Tutorials 32. Make words counters - 1 ( words counter 만들기) 이번 시간에는 'words counter'를 만들어 보겠습니다. 말 그대로 얼마나 많은 단어들이 있는지 카운팅 하는 프로그램입니다. 일반적으로 'words counter'는 문서 작업을 할 때에 얼마나 많은 글자가 사용되어는지 확인하는 용도로 많이 활용되곤 합니다. 대신 이번에는 특정 웹 페이지에서 어떤 단어가 얼마나 많이(빈도수) 사용되어졌는지를 알아보는 프로그램을 만들어보겠습니다. 이는 빅데이터, search engine(검색엔진) 분야 등 다양한 분야에 광범위하게 사용이 되는 개념이기도 합니다. 시작을 하겠습니다. 우선 코딩에 필요한 모듈들을 import 하겠습니다. 이번에는 웹페이지 관련 모듈인 requests, HTML 코드를 예쁘게(?), 단정하게 보여주는 BeautifulSoup, 카운팅 관.. 더보기
[PYTHON 3] Tutorials 25. 웹 크롤러(like Google) 만들기 2 - How to build a web crawler 안녕하세요. 지난 시간에 이어 웹 크롤러 만들기 2번째 시간입니다. 지난 시간에는 BeautifulSoup 를 이용해서 특정 사이트의 글 목록 리스트에서 URL, 제목을 파이썬으로 가지고 오는 방법에 대해 알아 보았습니다. 이번에는 그 연장선상으로 URL, 제목에 해당하는 글의 본문 내용을 가지고 오게 만들어 보겠습니다. 시작하겠습니다. 앞 시간의 코드에서 각 글의 본문 내용을 확인할 수 있도록 하는 함수 get_single_article(item_url) 을 만들어 주었습니다. 물론, 함수명은 원하는 이름으로 정하여도 무방합니다.▼ 앞서 만든 코드에서 지금부터 만들어 줄 함수가 들어가는 위치에서 호출할 수 있도록 함수 호출 부분을 삽입합니다. page += 1 위에 함수 호출 코드를 넣어 주었습니다. .. 더보기
[PYTHON 3] Tutorials 24. 웹 크롤러(like Google) 만들기 1 - How to build a web crawler 안녕하세요. 몇일동안 본업(?)에 매진하느라 소홀했던 튜토리얼을 다시 작성하려 합니다. 간혹 메일로 문의를 주시는 분이 계신데, (메일은 어떻게 아셨지 -_-a) 그냥 여기에 댓글을 다셔도 가능하면 답을 달아 드립니다. 긴급한(!) 일이 아니라면 메일은 삼가해 주셨으면 합니다^^;. 서두가 길었네요. 시작해 보겠습니다. 이번 시간에는 인터넷 상에 있는 자료(데이터: 글 + 이미지 + 파일 등등) 들을 파이썬을 이용해서 긁어오는 것을 하겠습니다. 우리가 잘 알고 있는 구글의 검색 시스템도 시시각각 인터넷상에 올라오는 글들을 크롤러(로봇)가 링크를 타고 타고해서 DB(데이터 베이스)에 잘 저장을 해 둔것을 사용자들이 찾는 시스템입니다. 여타 검색엔진과 다르게 구글이 크게 성장할 수 있었던 요인 중 하나는 사.. 더보기