2017-09-15 4 views
0

저는 가상 보조 프로젝트를 진행하고 있습니다. 다른 통화로 달러 환율을 알려주고 싶습니다. 나는 주어진 웹 사이트에서 데이터를 가져 와서 구문 분석하고 결과를 명령 줄에 출력 해주는 beautifulsoup을 사용하여 다음 코드를 작성했습니다. 그러나 이것은 USD to PKR에 불과합니다. 프로그램을 수정하여 통화가 걸리고 해당 통화의 전환율을 알려줍니다. 예를 들어 "영국의 달러 환율은 무엇입니까?", "아랍 에미리트 연방의 GBP는 얼마입니까?", "미국의 유로 환율은 얼마입니까?" 그리고 그것은 전환율을 나에게 돌려 준다. 내가 언급하고있는 코드는 아래와 같습니다. 파이썬으로 통화를 변환하는 방법?

import urllib.request 
from bs4 import BeautifulSoup 

currency_page = 'http://www.xe.com/currencyconverter/convert/?Amount=1&From=USD&To=PKR' 
currency = urllib.request.urlopen(currency_page) 
currency_data = BeautifulSoup(currency, 'html.parser') 

USD = currency_data.find('span', attrs={'class': 'uccResultUnit'}) 
USD_PKR = USD.text.strip() # strip() is used to remove starting and trailing 
print(USD_PKR) 

가 나는 URL http://www.xe.com/currencyconverter/convert/?Amount=1&From=USD&To=PKR 을 편집하고 Amount= custom_amount, From= any_source_curreny, To=any_target_currencyAmount=1, From=USD, To=PKR

를 교체하고 변수에 여러 통화의 이름을 전달하는 시도했지만 이걸로 confusedd입니다. 누구든지이 방법을 제안 할 수 있습니까? 어떤 도움을 주셔서 감사합니다. 감사합니다

+3

왜 웹 페이지를 고치는 대신 API를 사용하지 않습니까? – Barmar

+1

forex - https://pypi.python.org/pypi/forex-python –

+0

결과는 TTS 엔진으로 보내지고 저를 위해 그것을 말할 것입니다. 그래서 그걸 내가 버렸어. API가 그런 것을 제공합니까? –

답변

1

사용자 입력을 기반으로 동적으로 URL을 구성하는 것이 쉬운 해결책입니다 (이를 수행하려면 str.format()을 사용할 수 있습니다).

#!/usr/bin/env python 

from requests import get 
from bs4 import BeautifulSoup 
import sys 

v1 = sys.argv[1] 
v2 = sys.argv[2] 
amount = sys.argv[3] 

# check if the values passed are valid 
# and construct the url like so: 
currency_page = 'http://www......../convert/?Amount={}&From={}&To={}'.format(amount,v1,v2) 

currency = get(currency_page).text 
currency_data = BeautifulSoup(currency, 'html.parser') 

USD = currency_data.find('span', attrs={'class': 'uccResultUnit'}) 
USD_PKR = USD.text.strip() 
print(USD_PKR) 

결과 : 예를 들어도 코멘트에 언급 한 바와 같이

$ ./test.py EUR PKR 1       
1 EUR = 125.790 PKR 

다른 솔루션,

  1. 하는 API 또는
  2. 모듈을 사용하는 것입니다 대신.
+0

그러면 오류가 반환됩니다. urllib.error.HTTPError : HTTP 오류 400 : 잘못된 요청 –

+0

@Tauseef_Ahmed 이전 게시물의 '/ convert' URL 부분을 원래 게시물로 대체 했습니까? 나는 전형적인 이유 때문에 실제 URL을 게시하지 않았다! 또한 코드를 시도하고 나를 위해 잘 작동했습니다 (나는'urllib '대신'requests'를 사용합니다). – coder

+0

예. 여기서 수정 된 코드를 공유 할 수 있습니까? –