[Python] BeautifulSoup 사용하여 주식 종목 가져오기.

2021. 4. 12. 22:43업무 스킬/Python(파이썬)

728x90

 

Python의 BeautifulSoup를 사용하여 기본 웹크롤링 작성한 내용.

 

1. 웹크롤링에 필요한 BeautifulSoup, requests import 하기.

anaconda를 사용한다면 BeautifulSoup는 기본으로 깔려있을 것이다. 

아니면 깔려있는지 안 깔려 있는지 확인부터 해보자. (requests lib은 python의 기본 lib이니 다 있을 거다.)

 

난 아직 초보라 이 방법이 가장 쉽더라구..

↓복사↓
import bs4
print(bs4.__version__)

 

만약 해당 Library가 있다면 아래와 같이 Version 명이 뜨고 없다면 그런 거 없는데? 하고 error가 뜰 거다.

없으면

pip install BeaurifulSoup

를 통해 설치해주자.

 

2. 웹 크롤링하고자 하는 page URL 복사.

finance.naver.com/sise/sise_quant.nhn?sosok=1

나는 위의 페이지처럼 NAVER 금융 -> 코스닥 -> 거래량 상위 page를 사용할 거다.

각자 원하는 page의 URL을 가져오면 된다.

 

 

3. 해당 URL의 HTML 구문 가져오기.

requests.get을 통해서 HTML 구문을 가져올 거다.

requests.get만 하면 받았다는 reponse 명령어만 나오니

.text를 통해 문자로 만들어준다.

requests.get(url).text

 

 

4. BeautifulSoup 적용.

requests.get.text를 통해 가져온 HTML 구문을 우리가 사용하기 쉽게? 검색하기 쉽게 만들어주는 게

BeautifulSoup lib이다.  

 

그렇다면 우리가 가져온 HTML 구문을 BeautifulSoup를 적용해준다.

사용자 대부분 soup라는 인스턴스를 만들어서 사용한다. 괜히 튀지 말고 똑같이 해주자.

 

 

자 적용했다면 우리는 이제 soup라는 인스턴스를 사용하여 BeautifulSoup의 함수를 사용할 수 있게 된다.

 

5. 내가 원하는 Data가 어떤 HTML Tag에 쌓여 있는지 확인.

page에서 ctrl + u를 눌러주면, html 소스를 볼 수 있다.

난 해당 page에서 아래와 같은 종목명을 보고 싶은데, 종목명이 어떤 html tag에 쌓여 있는지 보면 된다.

 

ctrl + u 눌러주고 소스코드가 보이면 ctrl + f로 원하는 것을 찾으면 쉽게 찾을 수 있다.

 

내가 원하는 것은 <a class = "tltle">   </a>

에 둘러싸여 있는 것을 볼 수 있다. HTML은 잘 모르지만 찾아보니 a tag라고 하더라.

6. BeautifulSoup의 find_all 함수 사용하여 Data 빼오기.

BeautifulSoup를 적용한 soup 인스턴스에서, BeautifulSoup의 함수인 find_all를 사용하여 특정된 tag를 뺴온다.

위에서 봤듯이 내가 원하는 것은 <a class = "tltle">   </a>에 쌓여 있으니

soup.find_all("a" , class_ = "tltle")

로 tag문을 빼오면 된다. 주의할 점은 class_로 해야 한다. class라는 단어를 이미 python에서 사용해서

그런 거 같다.

 

이렇게 titles라는 인스턴스로 list형태의 tag문을 빼오고, 나는 여기서 tag문은 다 빼고 그 안의

내용물(문자)만 빼오고 싶다.

 

그렇다면 .text를 써주면 불필요한 tag는 다 빠지고, 안에 내용물만 받아 올 수 있다.

결과물은 아래와 같다. 짜잔

BeautifulSoup으로  거창한 크롤링을 한건 아니지만

이렇게 소소한 걸로 python의 재미를 느끼는 것도 참 중요한 것 같다.

728x90