크롤링이란?
- 크롤링(Crawling)의 사전적 의미는 기어다닌다는 의미를 지닌다. 어디를 기어다니는지에 대한 의문이 들텐데 다름아닌 웹(Web) 상을 기어다닌다고 생각하면 된다.
- 이러한 말 뜻은 웹상을 기어다니며 데이터들을 긁어 모은다는 의미에서 유래된 것으로 알려져있다. 다르게 불리는 말들로는 웹 스크래핑(Web Scraping), 데이터 긁어 모으기 등이 존재한다.
기술적인 의미
- '크롤링'은 웹 상에 존재하는 자료들을 특정한 방식을 사용하여 데이터들을 수집함을 의미한다. 여기서 중요한 점은 웹 상의 정보에는 여러가지 종류가 있다라는 점이다.
- '크롤링'은 정적인 문서가 대상이 될 수도 있고, API와 같은 서비스가 될 수도 있다. 정적인 자료를 대상으로 하는 것은 크롤링을 한번만 해서 정리하면 되는 것이기 때문에 비교적 수월하다고 할 수 있다. 하지만 동적으로 계속해 변화하는 자료들은 주기적으로 update를 필요로 하는 경우가 많기 때문에 특정한 방식들이 사용되어진다.
사용되는 툴 (Tool), 라이브러리 (Library)
- 나의 경우에는 Python을 이용한 크롤링을 진행하기 때문에 가장 많은 분들이 사용하는 Beautiful Soup 라이브러리를 이용한다.
- 만약 Java를 이용한다면 자바 버전인 JSoup, 브라우저를 이용한다면 Selenium을 사용하는 것이 일반적이라고 알려져 있다.
크롤링의 과정, 매커니즘
- 첫번째로는 당연하게도 대상을 선정하는 과정이 필요하다.
이 부분이 가장 기초가 되고 중요한 부분이라고 할 수 있다.
1. 대상이 웹 문서인 경우 2. 대상이 API인 경우
대상을 선정하고 난 후, 이렇게 두 가지의 경우가 생긴다. - 두번째로는 데이터를 불러오는 데이터 로드의 과정이 필요하다.
- 만약 대상이 웹 문서인 경우에는 HTML 문서가 로드 될 것이다.
- 만약 대상이 API인 경우에는 XML, JSON 문서가 로드 될 것이다.
[용어에 대한 정리들은 Python 카테고리의 하위 카테고리인 관련 지식에 포함되어 있다.] - 세번째로는 불러온 데이터들을 분석하는 과정이 필요하다.
- 이 부분은 자신이 사용하는 라이브러리 또는 프로그램에 따라 방식이 달라진다. 하지만 기본적으로 생각해야하는 부분은 동일하다.
- 로드된 데이터에서 자신이 추출하고 싶은 정보가 무엇인지를 특정해야 한다. 예를 들어 네이버 뉴스를 크롤링 한다고 하면 기사 제목 or 본문 내용 요약 or URL주소 등등 자신이 필요한 부분이 무엇인지에 대해 고민 해야한다. - 마지막으로는 분석이 끝난 데이터들을 수집하여 정리하는 과정이 필요하다.
- 마지막으로 앞서 했던 데이터 분석의 과정까지 왔다면, 분석된 데이터들을 정리하여 메모리에 저장하던 엑셀 파일로 추출 하던 목적으로 두고 있는 방향으로 데이터들을 저장하면 된다.
- 본인은 파이썬을 이용하였고, 모든 정보들을 눈으로 보기 위해 크롤링을 진행하였기 때문에 beautiful soup 모듈과 requests 모듈, 그리고 pandas 모듈, os 모듈을 사용하여 크롤링을 진행하였다.
마무리
웹 크롤링의 의미와 과정에 대해 대략적으로 다루어 보았는데, 과정에서 나온 용어들이나 세부 모듈들에 대해서는 한번에 다 다루기에는 양이 많기 때문에 구분해서 다루었다.
만약 크롤링이 무엇인지 알고 싶다거나 크롤링을 사용하는 대략적인 그림을 그려보고 싶었던 사람들이라면 도움이 되었을 것이라고 생각되며, 도움이 되었으면 좋겠다.
'Python > Knowledge' 카테고리의 다른 글
[Python] 사용자 에이전트 : User Agent (headers) (0) | 2021.12.31 |
---|