1. 크롤링이란?
'크롤링'은 정의하자면 검색 엔진(네이버, 구글 등) 로봇을 통해 데이터를 수집하는 방법을 의미합니다. 흔히 개인이 포털 사이트에서 검색을 통해 확인할 수 있는 정보를 퍼오는 행위인 '스크랩핑' 또한 크롤링이라고 부르기도 합니다.
2. 크롤링 하는 법
코딩을 통해 크롤링을 하기 위해선 2가지 핵심 요소가 있습니다. 첫 번째는 원하는 페이지의 HTML을 요청하는 것, 두 번째는 요청을 통해 가져온 HTML 중 필요한 데이터만을 잘 골라내는 것입니다. 이를 파이썬에서 성공적으로 진행하기 위해선 먼저 임포트(import) 해야 하는 라이브러리가 있습니다. 임포트 할 라이브러리는 requests, beautifulsoup가 있으며 다음과 같이 입력하면 임포트 할 수 있습니다.
import requests # HTML 정보를 요청하는 역할
from bs4 import BeautifulSoup # 받은 HTML 중 필요한 정보만 골라내는 역할
이렇게 임포트를 한 후엔, 필요한 정보를 담고 있는 웹 페이지 주소를 복사한 후 다음과 같이 입력하면 됩니다. 아래와 같이 입력하면, data라는 변수를 통해 웹 페이지 url의 데이터가 요청됩니다. 여기서 headers는 마치 사람이 직접 브라우저에서 엔터를 쳐서 검색하는 것과 같은 효과를 냅니다. 이렇게 코드만을 통해 데이터, 페이지에 접근하는 것은 대부분의 사이트가 막아두기 때문에, 이와 같은 작업이 필요합니다. 따라서 아래와 같이 작성하고 url만 자신이 필요한 페이지의 주소로 변경해서 입력하면 됩니다.
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('웹 페이지 주소 url',headers=headers)
위와 같이 요청을 했다면, 이제 요청한 HTML 데이터를 다시 구성하고, 필요한 정보를 골라내는 작업이 필요합니다. 이는 다음 코드를 통해 진행합니다.
soup = BeautifulSoup(data.text, 'html.parser')
information = soup.select('#웹 페이지 검사를 통해 Copy selector한 주소')
여기서 select 함수 내용 중 'Copy selector한 주소'란 다음 화면과 같이 웹 페이지의 '검사-Copy-Copy selector' 과정을 통해 복사할 수 있는 주소 항목을 의미합니다. 이후에 soup.select 함수 부분에 꼭 Copy selector한 주소가 아닌 다른 표기 방식(클래스, 태그 등을 통한 표기)도 가능하며, 크롤링하려는 페이지의 HTML 코드를 잘 분석해서 필요한 정보만 가져오면 됩니다.
3. DB(데이터베이스)
데이터베이스라는 단어는 많이 들어보셨을 것입니다. 데이터베이스란 데이터를 쌓아두고 잘 정리해두는 일종의 프로그램으로 생각할 수 있습니다. 실제로 우리가 단순히 데이터를 모아두기만 할 것이라면 그냥 닥치는대로 크롤링해두기만 하면 됩니다. 하지만 우리가 데이터를 수집하거나 저장하는 이유는 추후에 모아둔 데이터를 다시 활용하거나 필요한 정보를 잘 찾기 위해 저장합니다. 그렇기 때문에 이를 저장하는 방식 또한 중요한데, DB를 쌓는 방식에는 SQL과 NoSQL이 있습니다.
SQL(Structured Query Language)
관계형 데이터베이스라고도 하며, 정해진 틀(정해진 행과 열)에 맞추어 졍형화된 방식으로 데이터를 쌓는 구조입니다. 데이터를 수집하는 항목(열)과 행 등이 정해져 있기 때문에 유연성은 떨어지지만 데이터가 일관적이며 분석하기 편리합니다. SQL 방식을 사용하는 시스템은 MySQL, MS-SQL 등이 있습니다.
NoSQL(Non SQL)
비관계형 데이터베이스라고도 하며, 비교적 자유롭고 유연한 데이터 구조입니다. 주로 딕셔너리 형태로 데이터가 저장되기 때문에, 추가적인 데이터 항목, 데이터 구조가 바뀔 일 등이 잦은 초기 스타트업, 초기 서비스 등에서 많이 채택하는 방식입니다. NoSQL 방식을 사용하는 시스템은 대표적으로 MongoDB가 있습니다.
그리고 만약 MongoDB를 사용하는 경우에 DB가 눈에 보이지 않는 부분에 저장되고 관리되기 때문에, 이를 시각화하는 'robo 3T'라는 프로그램을 함께 사용하기도 합니다.
'지극히 개인적인 공부 노트 > 파이썬(Python)' 카테고리의 다른 글
[Python] 변수 이름 짓는 방법 (0) | 2021.08.04 |
---|---|
[Python] 다차원 리스트 생성 시 유의할 점 (1) | 2021.07.30 |
[Python] 정규표현식 (0) | 2021.05.31 |
[Python] 맷플롯립(matplotlib)의 유용한 기능 정리 (0) | 2021.05.11 |
[Python] 넘파이(numpy)의 유용한 기능 정리 (0) | 2021.05.11 |