본문 바로가기
[파이썬]/[파이썬]기초

[파이썬_기초]1. 네이버 환율 불러오기(2개이상)

by abooda 2020. 12. 19.
반응형

[파이썬_기초][1. 네이버 환율 불러오기(2개이상)-블로그 요약]

파이썬을 사용하여 네이버환율을 불러오는 방법에 대해서 설명함.

두개이상의 환율을 불러오는 방법임.

[파이썬_기초]1. 네이버 환율 불러오기(2개이상) 

파이썬 기초로써 이번에는 2개나라 이상의 환율정보를 가지고 오는 방법에 대해서 알아 보겠습니다.

 

구글을 검색하면 1개의 나라나, 대표적인 국가의 환율을 불러오는 방법은 많이 있습니다.

2개의 국가 이상이나 특이한 국가의 정보를 가져오는 내요은 없어서 작성하게 되었습니다.

 

 

1. 환율정보 불러오기(2개이상)

1. 라이브러리 설치

-. 환율정보를 가져오기 위해서, 우선 필요한 라이브러리 설치가 필요합니다.

: 여러가지 설명이 있는데, 제가 보기엔

  urllib로는 정보를 싹다 가지고 와서, BeautifulSoup로 쉽게 검색하고 보기 쉽게 만듭니다.

 

2. 환율정보 가지고 오기

-. 환율정보를 포함한 사이트를 확인하고, 해당사이트의 소스정보를 파이썬으로 가지고 오기

: urllib로 가지고온 정보는, 크롬에서 보이는 소스정보와 다르게 생김.

[네이버 환율정보 사이트와 소스정보]

 

3. BeautifulSoup 사용

-. BeautifulSoup통해서 분석 및 해석이 가능하게 만듬.

 

4. 데이터 추출

-. 네이버 환율정보 사이트에서 내가 원하는 정보를 추출하기.

-. soup_usd.find('select', id="select_to", class_="selectbox-source")

--> Find함수는 조건에 해당되는 모든 값을 리스트 형태로 만듬.

--> 결론적으로는 <option ~~~ 로 시작하는 값들을 불러옴.

[파이썬 결과]

 

[잠깐만!!]

<option label="1" value="3611.67">쿠웨이트 디날 KWD</option>

<option label="100" value="10.6294">일본 엔 JPY</option>

무슨 의미일까?

--> 데이터를 사용하기 전에는 꼭 검토가 필요합니다.

  (네이버에서 값을 보면 하기와 같이 이해가 됩니다.)

 

1. Option label = "1" or "100"

대한민국의 천원과 비교하는 단위

1000원 <-> 1 KWD(3611.67원)

1000원 <-> 100엔(1062.94원

 

2. Value = "3611.67" or "10.6294"

1 KWD: 3611.67원

1 엔: 10.6294원

 

4. 데이터 편집

-. 불러온 데이터에서 국가, 기준환율 및 원화 값을 가지고옴.

[잠깐만!!]

내가 얻고 싶은 값?

입력: 3달러

출력(1달러에 해당하는 각각의 값)

: 달러, 원, 루피아, 유로

ex) 3(달러), 3321.0

(원), 42251.91(루피아), 2.45(유로)

 

-. 데이터의 값들을 Dictionary의 형태로 가져옴.

 

[잠깐만!!]

1. opt.text???

-. option값에서의 텍스트로 구성된 값만 불러옴.

 

[option으로 시작되는 값]

 

[option으로 시작되는 값들 중에서 텍스트로 구성된 값을 불러옴.]

 

2. opt['value']

-. option값내에서 value의 값을 불러옴./p>

[파이썬 결과]

 

5. 필요한 결과값 불러오기

-. 한국을 포함한 여러국가의 환율 값을 불러옴.

 

6. 각각의 통화에 맞춘 변환 함수만들기

 

[잠깐만!!]

함수를 만든 방법(유로기준)

 

1. 값 확인

1달러 = us_dollar(단위: 원) => 원/달러

1루피아 = indo_rupiah(단위: 원) => 원/루피아

1유로 = eur_euro(단위: 원) => 원/유로

2. 값 변환

원하는 값: 100euro

1) 유로

100euro = 100euro[단위: 유로]

2) 원

100euro = 100euro[단위: 유로] * eur_euro[단위: 원/유로]= 100 * eur_euro[단위: 원]

3) 달러

100euro = 100 * eur_euro[단위: 원] * (1/us_dollar)[단위: 달러/원]

= 100 * eur_euro * (1/us_dollar)[단위: 달러]

4) 루피아

100euro = 100 * eur_euro[단위: 원] * (1/indo_rupiah)[단위: 루피아/원]

= 100 * eur_euro * (1/indo_rupiah)[단위: 루피아]

[파이썬 결과확인]

[파이썬 전체]

# Install 진행: beautifulsoup4, requests
from bs4 import BeautifulSoup
import urllib.request

url_usd = "https://finance.naver.com/marketindex/" # 가져올 데이터 들이 있는 사이트 주소
res_usd = urllib.request.urlopen(url_usd).read()
# 크롬에서 우클릭을 클릭해서, 소스보기를 누르면 보이는 전체 항목들을 가져옴(HTML)

# HTML 분석또는 해석하기
soup_usd = BeautifulSoup(res_usd, "html.parser")

# 원하는 데이터 추출하기                                                     
usd = soup_usd.find('select'id="select_to"class_="selectbox-source"# find_all은 에러가 난다

# Dictionary 형태로 만들기
currency ={}
for opt in usd.find_all('option'):
    currency[opt.text[-3:]]=float(opt['value'])

# 통화 결과값
us_dollar = currency['USD'# 1달러 원화
korea_won = 1 #1원 원화
indo_rupiah = currency['IDR'# 1루피화 원화
eur_euro = currency['EUR'# 1유로 원화

# 함수
def dollar(i):
    dol = i
    wo = round(i * us_dollar,2)
    ru = round(wo * (1/indo_rupiah),2)
    eu = round(wo * (1/eur_euro),2)
    return [dol, wo, ru, eu]

def won(i):
    wo = i
    dol = round(wo * (1/us_dollar),2)
    ru = round(wo * (1/indo_rupiah),2)
    eu = round(wo * (1/eur_euro),2)
    return [dol, wo, ru, eu]

def rupiah(i):
    ru = i
    wo = round(i * indo_rupiah,2)
    dol = round(wo * (1/us_dollar),2)
    eu = round(wo * (1/eur_euro),2)
    return [dol, wo, ru, eu]

def euro(i):
    eu = i
    wo = round(i * eur_euro,2)
    dol = round(wo * (1/us_dollar),2)
    ru = round(wo * (1/indo_rupiah),2)
    return [dol, wo, ru, eu]

# 결과 확인
print("dollar: ", dollar(3))
print("won: ", won(1000))
print("rupiah: ", rupiah(100000))
print("euro: ", euro(100))

 

*** Your memories make your destiny ***

반응형

댓글