参考链接: 
1, http://kuppalli.wordpress.com/2008/11/15/get-live-currency-value-using-yahoo-api/
2, http://www.gummy-stuff.org/Yahoo-data.htm

刚到墨尔本时, 我壮了壮胆子, 在 Subway 吃了一顿, 然后用我招商银行的信用卡结了账. 感觉还不错, 心想至少拿着人民币也饿不着了. 但回家一看账单, 招行先把账单上的澳元换美元, 再换人民币, 最后算给我的汇率就比当时的澳元/人民币汇率高的多了. 还是找个汇率低的时候多换点吧.

Yahoo! 上提供了各种金融数据的接口, 有股票/能源/期货自然也有外汇汇率. 我参考了一下API, 查询澳币/人民币汇率的方法是:

http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=AUDCNY=x

上面的链接在浏览器中可以得到如下数据:

"AUDCNY=X",6.7402,"3/5/2012","3:40am"

其实就是CSV格式了, 所以可以看出在URL里的"f=sl1d1t1"就分别指定了代号, 汇率, 日期, 时间这四个字段. 再往下就很简单了. 用 curl 获取数据, 再写入 MySQL 数据库就完成了采集功能. 而对比最近的几次汇率, 如果突破阈值就发送邮件, 也就完成了基本的监控功能了.

下面是我写的 PHP 文件, 用 Cron 设定间隔执行即可, 例如5分钟一次:

*/5  *  *  *  *  /usr/bin/php /home/raymond/path/to/cron-task.php

PHP 源码(写的很原始 ^o^):

<?php
$url = "http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=AUDCNY=x+AUDUSD=x";
$trigger_low = 6.68;
$trigger_high = 6.93;

$dbc = mysql_connect("localhost", "root", "blizzard");
if(!$dbc):
die("Error connecting to DB." . mysql_error());
endif;
?>
<?php
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($handle);

if(curl_errno($handle)):
echo "CURL Error: " . curl_error($handle);
else:
$sql = "insert into `forexrates` (`currencypair`, `rate`, `source-time`) values ";
$values = array();

$rows = explode("\n", $result); //echo print_r($rows); echo print_r($result);
foreach($rows as $row):
//"AUDCNY=X",6.8059,"2/29/2012","7:54pm"
$cols = explode(",", $row);
if(count($cols) < 4):
continue;
endif;
$currency_pair = substr($cols[0], 1, 6);
$rate = $cols[1];
$t = trim($cols[2], '" ') . ' ' . trim(trim($cols[3]), '"'); //echo $t;

$source_date = new DateTime($t);
$source_date_str = $source_date->format('Y-m-d H:i:s');

$values[] = " ('$currency_pair', '$rate', '$source_date_str')";
endforeach;

mysql_selectdb('falcon', $dbc);
$sql .= implode(',', $values); //echo $sql;
mysql_query($sql, $dbc);
if(mysql_errno($dbc)):
echo mysql_error($dbc);
endif;
endif;
curl_close($handle);
?>
<?php //notification for AUDCNY high and low rates
$sql = "select rate from forexrates where currencypair='AUDCNY' order by id desc limit 2";
$query = mysql_query($sql, $dbc);
$rate1 = (double)mysql_result($query, 0, 'rate');
$rate2 = (double)mysql_result($query, 1, 'rate'); echo $rate2 . ' --> ' . $rate1;

$subject = '';
$to = 'raynix@gmail.com';
$body = (string)$rate1;
if($rate1 > $rate2 && $rate2 > $trigger_high):
$subject = 'The rate is getting HIGH!';
mail($to, $subject, $body);
elseif($rate1 < $rate2 && $rate2 < $trigger_low):
$subject = 'The rate is getting LOW!';
mail($to, $subject, $body);
endif;

mysql_close($dbc);
?>

转载于:https://www.cnblogs.com/phpxuetang/p/4607978.html

调用Yahoo API监控外汇汇率相关推荐

  1. python调用zabbix api接口实时展示数据

    近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  ...

  2. python调用lib_基于python调用libvirt API

    基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...

  3. Python使用pyzabbix调用Zabbix API

    Python使用pyzabbix调用Zabbix API Zabbix是一个开源的提供分布式系统监视以及网络监视功能的解决方案. Zabbix能监视各种网络参数,监控服务器系统的安全运营状况,并提供灵 ...

  4. 用户领域 API 监控和代码注入检测

    原文地址:Userland API Monitoring and Code Injection Detection 原文作者:dtm 译文出自:掘金翻译计划 本文永久链接:github.com/xit ...

  5. API监控平台,统一监控系统API

    API监控平台能实时对企业系统单个API或多步业务流程API进行监控,能正确地了解到API的运行状况,在发现异常时能及时告警,让运维人员能第一时间获取故障信息,及时解决,提升企业的整体业务质量. Re ...

  6. 雅虎财经api_带有Yahoo API的Android反向地理编码– PlaceFinder

    雅虎财经api 在我之前的教程( 基于Android的基于位置的服务应用程序– GPS位置 )中,我向您展示了如何以经度和纬度坐标的形式检索用户的当前位置. 使用这些坐标,我们将提供有关用户位置的信息 ...

  7. 用Python调用OpenAI API做有趣的事

    获取 API KEY 首先需要 可以开全局的梯子,选择日本或韩国节点,可以通过 ipinfo 检查当前 IP 地址是否为日本或韩国地区,然后访问 OpenAI 网站注册账号并完成认证. 如果自己完成账 ...

  8. 深度解析云智慧监控宝新版API监控

    API已成为经济生态 API是随着互联网和云计算的兴起而催生的产物.像云供应商亚马逊.互联网巨头Google.社交媒体Twitter,他们的服务都是通过API的方式来提供的.API这个概念在2005年 ...

  9. 【android】利用Yahoo API完成天气预报

    一. 代码展示 1. 文件布局: activity_realize_forecast.xml <?xml version="1.0" encoding="utf-8 ...

  10. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

最新文章

  1. 如何用java语法解析接口返回的json串?
  2. java 使用Spring的JdbcTemplate以及DriverManagerDataSource实现JDBC操作
  3. PHP中遍历stdclass object 及 json 总结[中国航天神舟十号以json形式向地面返回数据]...
  4. Chrome反压缩JS代码:Pretty Print显示可读代码
  5. 8:Math.atan2、PathMeasure、点赞飘心效果、点赞数字滚动+1效果、集成支付
  6. 网页附加题写出下图的html,附加题(写HTML文件):根据给定的博客名单,自动生成HTML网页...
  7. 如何做好Serv-U安全设置,保护FTP服务器安全
  8. 数论练习1 ( 曹冲养猪 + [POJ 2891]Strange Way to Express Integers + 乘法逆元【带证明】)
  9. Vestigium-Google CodeJam 2020资格回合问题1解决方案
  10. Boost.Python实现Python C/C++混合编程
  11. 通信原理 —— 绪论
  12. openwrt x86 登录不上_求助,关于OpenWRT外接硬盘不识别的问题
  13. Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)...
  14. loadrunner脚本中关于httpCode401特殊情况
  15. python模型预测结果 取整_一日一技:Python里面的//并不是做了除法以后取整
  16. html 简单动画效果,HTML-简单动画
  17. 用c语言做判断题题库及答案,C语言题库及答案(选择题)
  18. Kafka配置broker映射错误报错Discovered coordinator xxx rack: null
  19. 什么是实体关系图(ERD)?
  20. 选择时间检定仪应该注意这11点

热门文章

  1. gnome 3 初见
  2. 个人游戏经历及游戏体验(解谜向)
  3. 【https】对称加密与非对称加密再理解
  4. 字节跳动技术团队年度 TOP10 技术干货,陪你度过不平凡的 2020
  5. katana lookfile属性的修改overwride
  6. C++语言里的pow函数(初学)
  7. 腾讯2021校园招聘-后台综合-第一次笔试 8.23 20.00-22.00 Apare_xzc
  8. mybati-plus自定义sql异常Invalid bound statement (not found)封装的sql查询正常
  9. U盘快捷方式病毒查杀
  10. Python values()函数用法