금융퀀트/프로그램기초

파이썬 : 웹스크레핑 Beautiful Soup 라이브러리

문송한투자자 2021. 7. 4. 23:58
반응형

Web Scraping 사전 준비 사항

BeautifulSoup 라이브러리 설치

BeautifulSoup 라이브러리는 아나콘다 cmd를 켜고 아래와 같은 명령어만 입력하면 된다. ( 추가적인 설명은 "01 파이썬 라이브러리 설치(Windows)"를 참조하면 된다. )

pip install beautifulsoup4

BeautifulSoup 사용(밑줄)

BeautifulSoup 은 받아온 웹데이터를 분석하고, 찾는 등의 기능을 한다. 그럼 먼저 보통 http 상에 데이터를 달라는 요청을 해야 할 것이다. 그것이 requests 라이브러리인데, 이건 그냥 아나콘다 파이썬 설치하면 자동으로 설치되어 있다. 그래서 BeautifulSoup을 사용해서 웹 스크래핑한다고 하면 아래처럼 import를 해놓고 시작하면 된다. 

import requests
from bs4 import BeautifulSoup

User-Agent 값 찾기

User-Agent는 우리가 사용하는 홈페이지가 사용자를 어떻게 인식하는지를 결정한다. 사이트에 User-Agent 인증을 요구함에도 우리가 header 에 user agent 를 붙이지 않고 requests 로 데이터를 요청하면 데이터를 받을 수 없다. 나의 User-Agent 는 구글에서 "user agent" 라고 검색하면 나오는 "https://www.whatismybrowser.com/detect/what-is-my-user-agent" 라는 홈페이지에서 확인 가능하다. 

BeautifulSoup을 이용한 홈페이지 데이터 추출

지금까지 설명한 내용을 바탕으로 BeautifulSoup을 이용하여 네이버 파이낸스의 주식 가격 페이지의 데이터를 불러오는 코드는 아래와 같다. 

import requests     # Request 라이브러리 입력
from bs4 import BeautifulSoup     # BeautifulSoup 라이브러리 입력     

url="https://finance.naver.com/sise/sise_market_sum.nhn?&page=1" #url 인스턴스에 url 값 지정
site_text = requests.get(url) 
#Request 라이브러리에 get 함수로 url 과 header 입력하여 site 의 내용을 요청

soup = BeautifulSoup(site_text.text, "lxml")
#Soup 이라는 인스턴스에 BeautifulSoup 함수를 써서 site내용을 lxml 형식으로 저장

print(soup) # Soup 인스턴스를 프린트

 

위 코드를 실행시켜보면 " https://finance.naver.com/sise/sise_market_sum.nhn?&page=1" 사이트에서 "검사" 기능을( 02 웹스크레핑: 홈페이지 구조 파악(네이버 파이낸스) 참조 ) 통해 볼 수 있는 내용이 나온다.

이제 필요한 것은 Soup이라는 인스턴스에 내가 찾는 홈페이지의 내용을 전부 담았으니 여기에서 내가 필요한 정보를 발라내는 작업이다.

반응형