네이버 금융 페이지에서 환율 정보를 가져와 출력하는 파이썬 예제코드로 정규식으로 데이터 불러오기를 해보겠습니다.
파이썬 예제 코드입니다.
import requests as req
import re
url = 'https://finance.naver.com/marketindex/?tabSel=exchange#tab_section'
res = req.get(url)
body = res.text
# 정규식을 준비
# DOTALL은 줄바꿈도 포함한다는 의미
# ?가 *과 함께 쓰이면 가장 좁은 범위를 가져온다는 의미
r = re.compile(r'h_lst.*?blind">(.*?)</span>.*?value">(.*?)</span>.*?change">(.*?)</span>.*?blind">(.*?)</', re.DOTALL)
captures = r.findall(body)
print("---------")
print("환율 계산기")
print("---------")
print("")
for c in captures:
print(f"{c[0]} : {c[1]} : {c[2]} {c[3]}")
코드의 첫 부분에서는 requests 라이브러리와 re 라이브러리를 임포트하고, 환율 정보가 있는 네이버 금융 페이지의 URL을 변수에 저장합니다.
다음으로, requests 라이브러리의 get() 메서드를 사용하여 해당 URL의 HTML 페이지를 가져와 res 변수에 저장합니다. 그리고 res.text를 사용하여 HTML 페이지의 내용을 body 변수에 저장합니다.
그 후에는, re 라이브러리를 사용하여 정규식을 준비합니다. 정규식은 문자열에서 패턴을 찾아내는 기법으로, re 라이브러리를 사용하여 구현할 수 있습니다. 이 코드에서 re.compile() 함수는 정규식 패턴을 컴파일하여 객체로 반환합니다. 패턴은 r 변수에 할당되며, 다음과 같이 정의됩니다.
r = re.compile(r'h_lst.*?blind">(.*?)</span>.*?value">(.*?)</span>.*?change">(.*?)</span>.*?blind">(.*?)</', re.DOTALL)
이 정규식 패턴은 h_lst로 시작하고 </로 끝나는 문자열에서 blind">와 value">, change">, blind"> 사이의 문자열을 가져오도록 정의되어 있습니다. 이때 .*?는 임의의 문자열을 의미하며, (.*?)는 괄호 안에 있는 문자열을 찾아서 그룹으로 저장하라는 의미입니다. re.DOTALL은 정규식에서 . 메타문자가 줄바꿈 문자를 포함하여 어떤 문자에도 일치하도록 지정하는 플래그입니다.
findall() 메서드를 사용하여 body에서 이 정규식과 일치하는 모든 문자열을 찾고, 그 결과를 captures 변수에 저장합니다.
마지막으로, captures를 반복문으로 순회하면서 각 환율 정보를 출력합니다. 출력되는 내용은 환율 종류(c[0]), 환율(c[1]), 전일대비 변동량(c[2]), 변동량 비율(c[3])입니다.
출력결과입니다.
---------
환율 계산기
---------
미국 USD : 1,315.00 : 2.50 상승
일본 JPY(100엔) : 1,003.51 : 6.96 상승
유럽연합 EUR : 1,434.80 : 4.09 하락
중국 CNY : 191.08 : 0.45 상승
달러/일본 엔 : 131.7900 : 0.5400 하락
유로/달러 : 1.0968 : 0.0082 상승
영국 파운드/달러 : 1.2515 : 0.0120 상승
달러인덱스 : 101.2600 : 0.5200 하락
WTI : 80.71 : 0.29 상승
휘발유 : 1604.9 : 4.98 상승
국제 금 : 2038.2 : 37.80 상승
국내 금 : 85366.06 : 1,536.73 상승
'코딩 > Python' 카테고리의 다른 글
[python] 2중 리스트 기초 사용법 (2) | 2023.04.09 |
---|---|
[python] strip().split() 사용하여 데이터 전처리 하는법 (0) | 2023.04.09 |
[Python] 간단한 체스 나이트 이동 코드 (0) | 2023.04.03 |