본문 바로가기
파이썬 배우기

파이썬으로 웹크롤링 해 보기!!! 5편 (ft. 네이버 증권 정보 가져오기)

by 북노마드 2022. 5. 29.
728x90
반응형

저번 시간에 이어서 계속해 보겠습니다. 

 

가져오는 사이트 주소 링크입니다.

 

네이버 금융

국내 해외 증시 지수, 시장지표, 뉴스, 증권사 리서치 등 제공

finance.naver.com

import requests
from bs4 import BeautifulSoup


html = response.text
soup = BeautifulSoup(html, 'html.parser')
price = soup.select("#_nowVal")

print(price)
 
이렇게 입력을 했더니 이런 결과 값이 나옵니다.

제대로 나왔습니다. 자, 저번 시간과 다른 게 없는데 이상하네요(*잘 안 되는 경우 사이트 주소를 다시 갖다 붙이면 되는 것 같습니다만). 아무튼 진도를 더 나가 보겠습니다. 

 

<strong class="tah p11" id="_nowVal">1,090</strong>

 

자, 그런데 현재가 앞 뒤로 코딩 언어들이 떡지떡지 붙어 있습니다. 딱 현재가만 나오게 하고 싶으시면 어떻게 해야 할까요?

 

price = soup.select_one("#_nowVal").text

요걸 해 주시면 됩니다. 

 

.text 

 

그런데 문제가 있습니다. select_one(~~).text는 아래처럼 잘 나옵니다.

select(~~).text 는 오류값이 뜹니다.

요 주의 하셔야겠죠? 계속 나가볼까요? 

 

price = price.replace(',', '')

print(price)
 
이건 1,090에서 콤마(,)를 없애주는 함수입니다. .replace를 잘 기억하고 있어야겠죠?

자, 부산주공 이외에도 여러 회사의 현재가를 가져오고 싶을 때는 어떻게 해야 할까요?

 

먼저 웹사이트의 공통점을 찾아야 합니다. 

 

부산주공 주소 : https://finance.naver.com/item/sise.naver?code=005030

삼성전자 주소 : https://finance.naver.com/item/main.naver?code=005930 

동서 주소 : https://finance.naver.com/item/main.naver?code=026960 

 

공통점이 보이시나요? 

https://finance.naver.com/item/sise.naver?code= 여기까지는 완전히 같고 뒤에 여섯자리 일련번호만 다르지요?

 

이럴 경우 뭘 쓰면 될까요? 같은 주소가 반복된다? 반복문  for가 떠오르지 않나요?

 

for 문을 쓰고 아래 내용들은 들여쓰기를 해야 합니다. 그때는 전체를 잡고 tab을 눌러주면 됩니다!

import requests
from bs4 import BeautifulSoup

codes  = ['005030','005930', '026960']

for i in codes:
    response = requests.get(f"https://finance.naver.com/item/sise.naver?code={i}")

    html = response.text
    soup = BeautifulSoup(html, 'html.parser')
    price = soup.select_one("#_nowVal").text

    print(price)

    price = price.replace(',', '')

    print(price)
 

보시면 부산주공이 1090원, 삼성전자가 66500원, 동서가 27600원이라고 출력이 잘 됩니다. 

 

여기서는 유심히 봐야 할 코딩이 이겁니다.

 

response=requests.get(f"https://finance.naver.com/item/sise.naver?code={i}")

 

유심이 눈에 익혀 주시기 바랍니다^^ 나중에 피가 되고, 살이 되실 겁니다.

728x90
반응형

댓글