@@ -64,4 +64,95 @@ def convert():
64
64
print (f"{ data [from_country - 1 ][1 ]} { answer_3 } is { data [to_country - 1 ][1 ]} { result } " )
65
65
return result
66
66
67
- convert ()
67
+ convert ()
68
+
69
+
70
+ # import os
71
+ # import requests
72
+ # from bs4 import BeautifulSoup
73
+ # from babel.numbers import format_currency
74
+
75
+ # os.system("clear")
76
+
77
+
78
+ # code_url = "https://www.iban.com/currency-codes"
79
+ # currency_url = "https://transferwise.com/gb/currency-converter/"
80
+
81
+
82
+ # countries = []
83
+
84
+ # codes_request = requests.get(code_url)
85
+ # codes_soup = BeautifulSoup(codes_request.text, "html.parser")
86
+
87
+ # table = codes_soup.find("table")
88
+ # rows = table.find_all("tr")[1:]
89
+
90
+ # for row in rows:
91
+ # items = row.find_all("td")
92
+ # name = items[0].text
93
+ # code =items[2].text
94
+ # if name and code:
95
+ # if name != "No universal currency":
96
+ # country = {
97
+ # 'name':name.capitalize(),
98
+ # 'code': code
99
+ # }
100
+ # countries.append(country)
101
+
102
+
103
+ # def ask_country(text):
104
+ # print(text)
105
+ # try:
106
+ # choice = int(input("#: "))
107
+ # if choice >= len(countries) or choice < 0:
108
+ # print("Choose a number from the list.")
109
+ # return ask_country(text)
110
+ # else:
111
+ # print(f"{countries[choice]['name']}")
112
+ # return countries[choice]
113
+ # except ValueError:
114
+ # print("That wasn't a number.")
115
+ # return ask_country(text)
116
+
117
+
118
+ # def ask_amount(a_country, b_country):
119
+ # try:
120
+ # print(f"\nHow many {a_country['code']} do you want to convert to {b_country['code']}?")
121
+ # amount = int(input())
122
+ # return amount
123
+ # except ValueError:
124
+ # print("That wasn't a number.")
125
+ # return ask_amount(a_country, b_country)
126
+
127
+ # ask_country(text) 함수 (Line 34 ~ 46)
128
+ # 지난 시간에 완성했던 ask() 함수와 거의 비슷하나 43번째 줄에서 countries[choice] 값을 리턴해주는 부분이 추가되었습니다.
129
+ # user_country, target_country 값 구하기 (Line 64 ~ 65)
130
+ # ask_country(text) 함수를 불러와 사용자가 고른 나라의 이름과 통화 코드를 저장 시켜줍니다.
131
+ # user_country, target_country 모두 같은 방식으로 동작합니다.
132
+ # amount 값 구하기 (Line 68)
133
+ # 사용자가 얼마만큼의 돈을 환전할지 알아내야 합니다.
134
+ # 그러기 위해선 ask_amount 함수를 작성하여 인자 값으로 user_country, target_country 를 보내야합니다.
135
+ # ask_amount(a_country, b_country) 함수 (Line 49 ~ 56)
136
+ # 사용자가 선택한 두 나라의 정보를 인자 값으로 받아왔습니다.
137
+ # 두 나라의 정보는 오로지 사용자에게 질문을 던지는 출력문에만 쓰입니다.
138
+ # amount = int(input()) 을 사용하여 사용자에게 환전할 돈의 양을 묻습니다.
139
+ # 돈은 숫자이므로 반드시 int() 로 감싸서 형변환 시켜줍니다.
140
+ # 그리고 amount 값을 리턴 시켜줍니다.
141
+ # 사용자가 만약 숫자가 아닌 문자를 입력했을 경우를 대비하여 try-except문을 사용하여 예외처리를 해줍니다.
142
+ # 사용자가 선택한 두 나라의 통화 코드(from_code, to_code) 가져오기 (Line 70 ~ 71)
143
+ # 2번에서 구한 user_country, target_country 값을 이용하여 간단히 통화 코드를 가져올 수 있습니다.
144
+ # 각각의 새로운 변수에 user_country['code'] , target_country['code'] 를 넣어주시면 오로지 통화 코드만 저장되는 것을 볼 수 있습니다.
145
+ # 홈페이지에서 환전 결과를 가져오기 (Line 73 ~ 80)
146
+ # 스크래핑을 하기에 앞서, requests 라이브러리를 이용하여 Transfer Wise 홈페이지에 HTTP 요청을 보내야합니다.
147
+ # 사용자로부터 입력을 받은 정보들을 URL에 포맷팅하여 GET 방식으로 HTTP 요청을 아래와 같은 코드로 보냅니다.
148
+ # currency_request = requests.get(f"{currency_url}{from_code}-to-{to_code}-rate?amount={amount}")
149
+ # beautifulSoup 라이브러리를 사용하여 해당 홈페이지의 html 코드들을 가져옵니다.
150
+ # 위의 사진은 환전 결과 값을 가져오기 위해 크롬 개발자 도구에서 inspect한 결과입니다.
151
+ # 홈페이지의 코드 변경으로 인해 환전 결과의 value 값을 가져올 수 없습니다.
152
+ # 그러므로 환전 결과 값을 가져오는 것이 아니라 다른 방법으로 접근하여야 됩니다.
153
+ # 홈페이지 하단에 보시면 1 COP = 0.30937 KRW 이라는 값이 있는데 초록색 글씨로 되어있는 0.30937 을 긁어와서 amount 값이랑 곱해주는 것으로 환전 결과 값을 얻을 수 있습니다.
154
+ # 저 초록색 값을 가져오기 위해 rate = currency_soup.find("span", {"class":"text-success"}).get_text() 이라는 코드를 작성해줍니다.
155
+ # 혹시 rate 값이 존재하지 않을 경우도 생각하여 if rate: 를 사용하여 rate 값이 존재할 때만 환전 값을 구하도록 코드를 작성합니다.
156
+ # 위에서 구한 rate 값을 float 형식으로 변환한 다음 amount 값이랑 곱하여 환전 값을 구하기 위해 아래와 같이 작성합니다.
157
+ # result = float(rate) * amount
158
+ # 마지막으로 환전할 돈의 양(amount) , 환전 결과(result) 를 format_currency() 를 이용하여 통화 형식으로 포맷 시켜줍니다.
0 commit comments