반응형

#웹 크롤링

#웹 스크래핑

 

여기서는 네이버 금융의 웹사이트 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"/>
  
  ...
  ...
  ...

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기