환율 계산을 위해 currencyconverter 라이브러리를 설치하자.
python -m pip install currencyconverter
아래와 같이 코드를 작성하고 결과를 확인해보자.
결과를 확인해보면, 여러가지 통화가 집합으로 출력된다. USD와 KRW를 확인했으니, 이제 환율 계산기를 만들어보자.
코드를 아래와 같이 수정한다.
http://www.ecb.europa.eu/stats/eurofxref/eurofxref.zip
환율에 대한 정보를 얻기 위해 ECB(유럽 중앙 은행)의 환율 데이터를 zip 형식으로 제공하는 URL을 사용하고 있다. 환율 데이터를 기반으로 1 USD를 KRW로 변환한 결과, 1279원이 나왔다. 그러나 실시간 환율과는 약간의 차이를 보인다.
차이가 발생하는 이유는 ECB에서 제공하는 환율 데이터는 영업일을 기준으로 하루에 한번 갱신되기 때문이다. 따라서 대략적인 정보를 제공하는 정도로는 유용할 수 있으나, 정확한 정보를 전달하기에는 부족함이 있다.
먼저 라이브러리를 설치해주자.
python -m pip install beautifulsoup4
① request
② bs4, BeautifulSoup
※ 웹 스크래핑과 웹 크롤링
웹 스크래핑과 웹 크롤링은 웹 페이지에서 데이터를 수집하는 두 가지 다른 기술이다. 웹 스크래핑은 웹사이트에서 데이터를 추출하는 프로세스로 주로 조사, 분석의 용도로 사용된다. 반면 웹 크롤링은, 데이터를 체계적으로 스캔하는 자동화된 프로세스로, 주로 웹사이트에 대한 정보를 색인화하고 저장하는 용도로 사용된다.
③ headers
※ 사용자 에이전트 문자열
HTTP 요청에는 요청을 보내는 클라이언트의 정보가 포함되는데, 이 정보를 사용자 에이전트 문자열이라고 한다. 즉, 사용자 에이전트 문자열은 클라이언트가 누구인지 서버에게 알리는 역할을 수행한다. 서버는 이 정보를 통해 요청을 보내는 클라이언트의 종류를 파악하고, 이에 맞게 웹 페이지를 제공하는 등의 응답을 수행한다.
웹 크롤링을 하는 경우, 사용자 에이전트 문자열을 설정하면 웹 브라우저인 것처럼 웹 서버를 속일 수 있다. 위 예시에서 사용된 Mozilla/5.0이 바로 사용자 에이전트 문자열이다.
④ get요청
⑤ BeautifulSoup(response.content, "html.parser")
⑥ content.find
코드의 실행 결과는 실제로 Investing 닷컴에 들어가 확인할 수 있는 환율과 동일하게 나타난다. 또한 코드를 재실행 할때마다 환율이 조금씩 달라지는 것을 보아, 실시간 환율을 잘 가져오고 있음을 알 수 있다.