#웹 크롤링
#웹 스크래핑
여기서는 네이버 금융의 웹사이트 html 문서를 받아서 출력해보겠습니다. 웹스크래핑의 기초 개념 연습입니다.
※웹 스크래핑이란 인터넷 상에서 필요한 정보를 가져오는 것을 의미합니다.
| 하기 전에 뭐를 컴퓨터에 설치해 둬야 해?
기본적으로 Python이 설치되어 있어야 합니다. 그리고 Python에 웹 스크래핑에 필요한 requests, fake_useragent, bs4(BeautifulSoup) 등이 설치되어 있어야 합니다.
아래에서는 순서대로 코딩을 해보겠습니다.
| 필요한 라이브러리들 임포트하기
서버에 request(요청)하기 위해서 필요한 requests
요청의 response(반응)으로 돌아온 html문서를 나누고 분류(parsing)하기 위해 필요한 BeautifulSoup
브라우저에서 요청하는 것으로 위장을 할 수 있도록 해주는 UserAgent를 임포트합니다.
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
| header 정보에 agent를 크롬으로 설정하기
header정보에 agent를 설정하지 않으면 로봇이 요청을 보냈다는 것을 서버 쪽에서 인지합니다. 일부 사이트에서는 과부화 등을 초래할 수 있기 때문에 로봇의 스크래핑 등을 막아두고 있습니다(네이버 금융의 정확한 정책은 확인해보지 않았습니다).
ua = UserAgent()
header = {'user-agent' : ua.chrome}
| header 정보와 함께 요청하기
여기서 요청한다는 의미는 우리가 일반적으로 브라우저의 주소창에 URL을 입력하고 엔터를 친 상태와 마찬가지입니다. 브라우저에서 엔터를 치면 브라우저에서 사이트를 표시할 수 있도록 여러 데이터들을 보내주는데 마찬가지로 그 데이터를 프로그램 상에서 받을 수 있도록 하는 것입니다.
get 메서드를 사용해서 request(요청)을 합니다.
get(URL, headers = header 정보)
finance_page = requests.get('https://finance.naver.com/', headers = header)
| 받아온 html문서를 나누고 분류(parsing)하기
BeautifulSoup을 사용합니다.
soup = BeautifulSoup(finance_page.content,'lxml')
※lxml이 설치되어 있지 않은 경우는 BeautifulSoup(finance_page.content,'html.parser')처럼 html.parser를 사용할 수 있습니다.
| soup을 출력해 보기
이렇게 만들어진 soup을 prettify메서드를 이용해서 들여쓰기가 된 상태로 출력을 합니다.
print(soup.prettify())
아주 긴 html문서가 출력되는 것을 볼 수 있습니다.
<html lang="ko">
<head>
<title>
네이버 금융
</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<meta content="text/javascript" http-equiv="Content-Script-Type"/>
...
...
...