필자가 파이썬을 배우고 난 후 가장 처음 해 본 프로젝트가 크롤링이었다. 지금은 웬만큼 익숙해 져서 크롤링 코드를 짜는 데 그리 오래 걸리지 않게 되었다.
그냥 무작정 코드를 따라하는 것보다 기본적으로 어떤 원리로 동작하는 지에 대한 배경 지식이 있다면, 그저 코드를 따라하는 것을 넘어서 자신만의 크롤러를 만드는 데에도 도움이 될 거라 생각된다. 따라서 1편에서 먼저 기본 개념과 작동 원리에 대해 설명한 후에 2편에서 준비 사항, 3편에서 코드에 대한 자세한 설명을 하고자 한다.
크롤링을 위해 필요한 기본 개념
우선, 크롤링이란, crawl: 기어간다. 라는 뜻인데, 거미와 거미줄의 비유를 생각해보면 되겠다. 우리가 인터넷을 'web'이라 부르는 것처럼 거미줄을 떠올려 보면 그 web을 기어다니며 정보를 가져오는 것이 바로 crawling이다.
그럼 그 정보는 어떻게 가져오는 걸까? 이를 알기 위해서는 서버와 클라이언트에 대해 알아야 한다. 웹의 가장 기본 구조는 서버와 클라이언트 구조이다. 서버는 정보의 공급자이며, 클라이언트는 정보를 요구하는 주체이다. 이들은 http라는 통신 규약을 바탕으로 소통하는데, 클라이언트가 서버에게 정보를 요청(request)하면, 서버가 일련의 처리 과정을 거쳐 정보를 주어도 될 것 같다는 판단 하에 클라이언트의 요구에 응답(response), 즉 정보를 제공한다.
이렇게 얻게 된 정보는 html 형식으로 이뤄져 있다. 우리가 크롬, 인터넷 익스플로러 등의 웹 브라우저를 통해 보게 되는 웹 페이지들은 모두 html 형식으로 이뤄져 있다. 이는 f12 키를 눌러 확인해 볼 수 있다.
필자가 지금 하고자 하는 크롤링은 이렇게 얻은 html 소스를 바탕으로 이를 분석(parsing)해 html 태그 속 텍스트들을 가져오는 작업을 할 것이다.
위의 개념들을 바탕으로한 크롤링 작동 과정은 다음과 같다.
여기서 코드 작성은 '파이썬', 웹브라우저를 통제하기 위해 selenium 모듈과 chrome driver를 사용할 것이다. 가져온 html의 파일의 분석(parsing)은 BeautifulSoup 모듈을 이용할 것이다. 자세한 코드 설명은 2편에서 진행할 것이다.
'컴퓨터' 카테고리의 다른 글
네이버 웹툰 베스트 댓글 크롤링-3 (10) | 2020.03.02 |
---|---|
네이버 웹툰 베스트 댓글 크롤링-2 (0) | 2020.03.01 |
positional encoding이란 무엇인가 (5) | 2020.02.20 |
[pytorch] 언어별 이름(성씨) 분류 (0) | 2020.02.13 |
[pytorch] 파이토치 튜토리얼 5 (0) | 2020.02.11 |
댓글