求一个获取汇率的Python脚本,之前的全不能用了
这个是我之前找的我一个脚本 现在不行了
#python
import json,urllib
from urllib.parse import urlencode
import urllib.request
url = ‘http://api.k780.com’
params = {
‘app’ : ‘finance.rate’,
‘scur’ : ‘USD’,
‘tcur’ : ‘CNY’,
‘appkey’ : ‘APPKEY’,
‘sign’ : ‘SIGN’,
‘format’ : ‘json’,
}
params = urlencode(params)
f = urllib.request.urlopen(’%s?%s’ % (url, params))
nowapi_call = f.read()
#print content
a_result = json.loads(nowapi_call)
if a_result:
if a_result[‘success’] != ‘0’:
print(a_result[‘result’])
else:
print(a_result[‘msgid’]+’ '+a_result[‘msg’])
else:
print(‘Request nowapi fail.’)
试了几个类似的程序也都不行了 结果都是
(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)))
所以想问各位有没有什么好办法。
求一个获取汇率的Python脚本,之前的全不能用了
应该是接口变了
https://www.nowapi.com/api/finance.rate_cnyquot
听说雅虎也提供 API,自己改改代码吧
我最近也遇到了同样的问题,很多免费的汇率API都挂了或者改了规则。这里给你一个目前还能用的方案,用 requests 库直接请求一个公开的数据源。
import requests
import json
def get_exchange_rate(base_currency='USD', target_currency='CNY'):
"""
获取实时汇率
:param base_currency: 基础货币代码,如 USD
:param target_currency: 目标货币代码,如 CNY
:return: 汇率值 (float),如果失败返回 None
"""
# 使用 exchangerate-api.com 的免费端点(无需API Key,但有调用限制)
url = f"https://api.exchangerate-api.com/v4/latest/{base_currency}"
try:
response = requests.get(url, timeout=5)
response.raise_for_status() # 检查请求是否成功
data = response.json()
# 从返回的数据中获取目标货币的汇率
rate = data['rates'].get(target_currency)
if rate is None:
print(f"错误:未找到货币代码 {target_currency}")
return None
return rate
except requests.exceptions.RequestException as e:
print(f"网络请求错误: {e}")
return None
except (KeyError, json.JSONDecodeError) as e:
print(f"解析响应数据错误: {e}")
return None
# 使用示例
if __name__ == "__main__":
# 获取美元对人民币的汇率
usd_to_cny = get_exchange_rate('USD', 'CNY')
if usd_to_cny:
print(f"当前 USD 兑 CNY 汇率: 1 USD = {usd_to_cny:.4f} CNY")
# 获取欧元对日元的汇率
eur_to_jpy = get_exchange_rate('EUR', 'JPY')
if eur_to_jpy:
print(f"当前 EUR 兑 JPY 汇率: 1 EUR = {eur_to_jpy:.4f} JPY")
代码说明:
- 这个脚本使用了
exchangerate-api.com的免费服务,不需要注册或API密钥。 get_exchange_rate函数接受两个参数:base_currency(基础货币)和target_currency(目标货币),返回两者之间的汇率。- 函数内部处理了网络请求异常和JSON解析错误,避免程序崩溃。
- 主程序部分展示了如何调用这个函数获取美元对人民币、欧元对日元的汇率。
运行这个脚本前,你需要先安装 requests 库:
pip install requests
注意: 免费API通常有调用频率限制(这个大概是每小时15次),如果你需要高频或商业用途,建议查看该网站的付费方案或寻找其他替代API。
这个方案目前是有效的,如果以后又挂了,你可以考虑换用其他类似的免费服务,比如 exchangerate.host 或者 Frankfurter.app,调用方式都差不多。
试试这个,应该能解决你的问题。
雅虎 Google 都有 API,或者图省事的话 https://pypi.python.org/pypi/forex-python 直接装包呗。
接口不是固定不变的。这种情况要么自己写,要么找人付费改
依照楼主的代码,我这边有一点小问题。就是在第七行。url = ‘http://api.k780.com’ 要改成 url = 'http://api.k780.com/'
这样我就能得到正确的 json。当然,我用的 appkey,sign 都是他事例中提供的值,我没有注册,所以我觉得可能不是脚本不对,而是楼主需要重新取一下 appkey 了吧?
这个试过了 还是不行的

一模一样的代码,我这里移动宽带。运行显示成功。这个问题在我这里再现不了,抱歉,帮不了你了。
这么多 api,重新找个 ok 的


