이번 강좌에서는 크롤링을 시작하기 전 기초에 대해 알아보도록 하겠습니다. 우선 크롤링을 하기 전에 알아야 할 기초지식과 기본적인 HTML 속성 그리고 크롤링 데이터를 만들어보는 방법에 대해 알아보도록 합시다.
우리가 가져와야할 HTML에 대해 먼저 알아보자.
우선 우리가 가져올 웹사이트들은 대부분 HTML로 구성되어 있습니다. API가 아닌 이상 99%가 HTML과 CSS로 구성되어있을 겁니다. CSS는 웹사이트의 디자인 요소이기 때문에 필요 없고 HTML안에 데이터 값이 존재하기 때문에 우리는 HTML을 가져와야 합니다. 그러나, 가져오기 전 HTML의 기본적인 것을 알고 지나가야 합니다.
따라서 크롤링에만 필요한 HTML을 좀 알아보도록 합시다.
우선 HTML의 구성 요소에 대해 알아보고자 합니다.
HTML은 열린태그, 속성, 데이터, 닫힌 태그로 구성되어 있습니다.
<열린태그 속성="속성값">데이터</닫힌태그>
그래서 웹사이트들의 소스들을 보면 대부분 아래와 비슷하게 구성되어 있을 겁니다.
<span class="Python3">None</span>
크롤링을 할 때 우린 열린 태그만 알고 있으면 되고, 속성과 속성 값은 그 데이터를 찾기 위한 꼭 필요한 데이터중 하나라고 생각하시면 됩니다. 그리고 만약에 크롤링을 한다면 열린 태그와 닫힌태그 사이의 값만 준다는 것도 알고 있어야 합니다.
그럼 만약에 데이터에 다른 태그가 들어가 있다면?
<span class="Python3">
None
<span class="JavaScript">undefined</span>
</span>
만약에 이렇게 구성되어 있다면 어떻게 될까요. 열린 태그 값인 span과 속성 값 Python3에 대해 값을 달라고 하면 어떻게 구성될까요? 바로 아래처럼 반환될 것입니다.
None
<span class="JavaScript">undefined</span>
따라서 물론 None값을 구하긴 어렵겠지만 undefined라는 값을 구하기 위해선 span 태그의 JavaScript라는 class를 한 번 더 찾아주거나, 혹은 먼저 span 태그의 JavaScript라는 속성 값을 가지고 있는 class를 찾아주면 됩니다.
이제 우리는 HTML의 구성요소를 알게 되었습니다. 앞으로는 진짜로 값을 구해보도록 하겠습니다. 그렇게 하기 위해선 이것들을 분명히 알고 가셔야 한다는 것을 아시기 바랍니다.
크롤링을 할 수 있게 변환하자!
그다음으로는 Soup 형태로 변환해야 비로소 크롤링하기 위한 준비가 끝납니다.
soup = BeautifulSoup(html 코드,파서)
이렇게 하시면 soup의 변수를 생성후 soup형태의 html이 변역 된 크롤링하기 위한 값이 들어갑니다. 그전에 우리는 이 함숫값에 들어가야 하는 것을 알아야 합니다.
html 코드는 지난 2편에서 구하신 html 값을 넣으시면 됩니다.
2020/09/05 - [개발 강좌/크롤링 강좌] - 크롤링 02 | 파이썬을 통하여 html를 불러오자.
그러나, 파서를 넣긴 위해 아래의 표를 참고하시고 상황에 따라 넣어 보시는 것을 권장합니다.
파서 | 장점 | 단점 |
html.parser | 아무런 설치를 할 필요가 없다. | |
lxml | 가장 빠르다. | lxml을 추가로 설치하여야 한다. (pip install lxml) |
lxml-xml | 가장 빠르고 xml 형태를 지원한다. | lxml을 추가로 설치하여야 한다. (pip install lxml) |
html5lib | 웹사이트와 같은 방식으로 파싱을 지원합니다. | 많이 느리고, html5lib를 추가로 설치해야한다. (pip install html5lib) |
개인적으로 저는 상용을 할 거면 lxml을 사용하고, 디버그나 테스트를 할 때는 html.parser를 사용하는 것을 추천합니다.
이렇게 오늘은 짧게 크롤링을 하기 전 HTML에 대해 알아보았습니다. 다음 편부터는 진짜로 크롤링에 들어가게 됩니다. 그전에 우리는 크롤링, 파싱의 방식을 알아두셔야 할듯합니다. BeautifulSoup를 기반으로 두고 있는 크롤링은 find로, 파싱은 select 방식으로 진행하게 됩니다. 다음 강좌부턴 find를 사용해서 크롤링을 해보겠습니다.
'개발 강좌 > 크롤링 강좌' 카테고리의 다른 글
크롤링 05 | select를 사용하여 값을 불러오자 (0) | 2020.12.20 |
---|---|
크롤링 04 | find를 사용하여 값을 불러오자 (0) | 2020.12.13 |
크롤링 02 | 파이썬을 통하여 html를 불러오자. (7) | 2020.11.29 |
크롤링 01 | 크롤링이란? (0) | 2020.11.22 |