본문 바로가기
Engineering/Python

[python] 실시간 환율 가져오기 (feat. forex-python & xpath)

by SPICA910 2023. 5. 5.
반응형

오늘은 환율을 가져와 보겠습니다. 

환율정보를 가져오는게 생각보다 쉽지는 않네요. 대부분 외국사이트가 실시간 정보는 막고 있습니다. (유료화 정책)

따라서 우선 forex-python을 이용해서 찾아보고, 네이버나 다른 사이트에서 가져오는 방법을 설명하도록 하겠습니다. 

 

 

1. 우선 사용할 library는 forex-python 입니다. 

 

[설치]

pip install forex_python

[document]

https://forex-python.readthedocs.io/en/latest/usage.html

 

Usage Examples: — forex-python 0.3.0 documentation

 

forex-python.readthedocs.io

[example]

from forex_python.converter import CurrencyRates

c = CurrencyRates()
USDKRW = c.get_rate('USD','KRW') 
print("forex_python : ",USDKRW)

- Document 의 내용을 보면 과거의 외환 정보등을 불러올수 있도록 되어 있습니다. 

근데..... 그런데.... 

결과값으로 올라온 값이 네이버와 상이 합니다. 

 

[python 결과]

[네이버 검색]

흠.. chatGPT에 이 값이 어디서 온건지 물어봅니다. 

[Oanda]

- 여러 소스를 어떻게 합쳐서 값을 뽑아내는 것인지는 아직 모르겠지만 환율에서 25원이나 차이나게 보이면 믿을수가 없습니다. 따라서 다른 방법을 찾아봅니다. 

 

이번에 선택한 방법은 xpath입니다. 

네이버에서 우선 가져와 봅니다. 

네이버에서 환율을 찾고, 개발자도구를 열어 찾은 숫자에서 copy - copy xpath를 해줍니다. 

 

*xpath를 얻는 방법을 모르면 다음 링크에서 참조하세요. 

 

 

 

이제 얻게된 URL과 xpath를 가지고 값을 불러오겠습니다. 

import requests
from lxml import html

#define URL
forex_url = 'https://exchangerates.org/1-usd-to-krw'
#define xpath
xpath = '/html/body/main/div[2]/div/div/div[2]/div/div[1]/div/div[2]/div[1]/text()'

response = requests.get(url)

#Check available URL [200]:OK, [403]:empty
#print(response)

tree = html.fromstring(response.content)
element_text = tree.xpath(path)[0]
# Print the text content of the selected element
print(element_text)

정상적으로 가져오는 것을 확인했습니다. 

 

추가적으로 exchangerate.org도 같은 방법으로 했습니다. 

여기서는 forex_url과 xpath만 수정해서 값을 가져올수 있습니다. 

 

링크를 하나 드릴테니 예제로 값을 불러와보세요.

https://exchangerates.org/1-usd-to-krw

 

오늘도 즐거운 파이썬 하세요~

반응형

댓글