크롤링(Crawling)
크롤링이란 웹에서 데이터를 수집하여 원하는 데이터를 추출하는 기술이다.
데이터를 검색, 색인, 가공까지 가능하기에 방대한 자료들을 활용하는 검색엔진 혹은 특정 정보들을 분석해야하는 분야에서 다양하게 사용되고 있다.
1. 크롤링 방식
1) 웹 페이지에 데이터 요청
정보를 추출하기 위해 웹에 요청하는 방식은 Get과 Post가 있다.
- Get : URL을 통해 서버에 정보를 전달. URL 특성 상 길이제한이 있어 일반적으로 적은 양의 정보를 전달할 때 사용.
- Post : 요청과 응답이 웹 페이지의 본문 안에서 일어나 글자 수의 제한이 없음.
이 단계에서 Python은 주로 requests 로 처리한다.
import requests
r=requests.get(target_url)
target_url 변수에 크롤링 하려는 웹페이지의 URL을 문자열로 저장한 뒤 requests.get()으로 불러온다.
2) 데이터 파싱
데이터를 추출하기 위해서는 가져온 웹 페이지를 파싱하는 단계가 필요하다.
파싱 : 페이지(문서, html 등)에서 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보로 가공하는 것
이 단계에서 Python은 Beautiful soup 로 처리한다. (HTML, xml 파싱 라이브러리)
from bs4 import BeautifulSoup
#lxml파싱
lxml = BeautifulSoup(r.content, 'lxml') #r=requests.get(target_url)
#HTML파싱
html = get_html(target_url)
soup = BeautifulSoup(html, 'html.parser')
1)에서 가져온 데이터를 파싱한다. (lxml이 성능향상에 좋음)
3) 데이터 추출
2)에서 파싱한 데이터에서 원하는 데이터를 추출, 처리한다.
이 단계에서 Python은 soup 객체의 find_all 혹은 find 함수를 사용해 데이터를 추출한다.
result = soup.find_all("a")
print(len(result))
2. 제한 규약 (robots.txt)
지식재산권을 침해하는 등의 피해를 방지하기 위해 웹 페이지마다 크롤링을 제한하는 규약이 있다.
웹 사이트 주소 끝에 'robots.txt'을 입력하면 크롤링을 허용하는 범위를 알려준다.
크롤링개념과 크롤링 방식에 대해 알아보았다. 다음 회차에 Python으로 간단히 크롤링해보자.
Reference
반응형
'Web > 실습' 카테고리의 다른 글
웹 서비스 다뤄보기 (2) - JavaScript와 DOM (2) | 2021.05.12 |
---|---|
웹 서비스 다뤄보기 (1) - HTML, CSS (0) | 2021.05.12 |
크롤링 (2)-환경설정 : pip 라이브러리, requests, BeautifulSoup (0) | 2021.05.10 |