php获取中国银行汇率,用Simple Html Dom Parser 获取中国银行汇率
Simple Html Dom Parser是一款遍历HTML Dom的php工具,其使用方法类似jquery,很是方便。不过我今天才知道这孩子的存在,惭愧!决定学习一下,写一个小程序,获取中国银行外汇牌价。
关于版权
这个我很是糊涂,中国银行汇率似乎没有API接口,在网上翻腾了半天只找到了这个,对比了下和中国银行官网的外汇牌价并不完全一致。所以采集可能是最有效的方式,中国银行对此的版权限制是:未经中国银行许可,不得以商业目的转载本汇率表的全部或部分内容,如需引用相关数据,应注明来源于中国银行
我想个人使用应该没啥问题吧。
方法使用Simple HTML Dom Parser读取中国银行外汇牌价网页,为了方便选了英文版(http://www.boc.cn/sourcedb/whpj/enindex.html)
获取带有center属性的tr,从表的结构来看这些是记录汇率的
遍历表格元素,把数据存入数组
代码如下require_once( 'simple_html_dom.php' );
/**
*Retrieve info from boc website using simple html dom.
*
*Simple Html Dom Parser document and download: http://simplehtmldom.sourceforge.net/
*/
function get_boc_exchange_rate_table(){
//Get web page by simple html dom parser
$html = file_get_html( 'http://www.boc.cn/sourcedb/whpj/enindex.html' );
//Control the items in the currency list.
$allowed_currency = array( 'TWD', 'GBP', 'HKD', 'USD', 'CHF', 'SGD', 'SEK', 'DKK', 'NOK', 'JPY', 'CAD', 'AUD', 'MYR', 'EUR', 'MOP', 'PHP', 'THB', 'NZD', 'KRW', 'RUB' );
//Stores the final data
$exchange_rates = array();
foreach( $html->find('table tr[align=center]') as $tr ){
$currency_name = $tr->children(0)->plaintext;
if( in_array( $currency_name, $allowed_currency ) ){
$exchange_rates[ $currency_name ]['currency_name'] = $currency_name;
$exchange_rates[ $currency_name ]['buying_rate'] = $tr->children(1)->plaintext;
$exchange_rates[ $currency_name ]['cash_buying_rate'] = $tr->children(2)->plaintext;
$exchange_rates[ $currency_name ]['selling_rate'] = $tr->children(3)->plaintext;
$exchange_rates[ $currency_name ]['cash_selling_rate'] = $tr->children(4)->plaintext;
$exchange_rates[ $currency_name ]['middle_rate'] = $tr->children(5)->plaintext;
$exchange_rates[ $currency_name ]['pub_time'] = str_replace(" ", '',$tr->children(6)->plaintext);
try {
$datetime = new DateTime( $exchange_rates[ $currency_name ]['pub_time'] );
} catch( Exception $e ){
echo $e->getMessage();
}
$exchange_rates[ $currency_name ]['pub_time'] = $datetime->format('Y-m-d H:i:s');
}
}
return $exchange_rates;
}
get_boc_exchange_rate_table函数会返回一个数组,数组结构如下所示:Array
(
[TWD] => Array
(
[currency_name] => TWD
[buying_rate] =>
[cash_buying_rate] => 19.69
[selling_rate] =>
[cash_selling_rate] => 21.1
[middle_rate] => 20.48
[pub_time] => 2013-06-03 17:36:21
)
[GBP] => Array
(
[currency_name] => GBP
[buying_rate] => 932.37
[cash_buying_rate] => 903.58
[selling_rate] => 939.86
[cash_selling_rate] => 939.86
[middle_rate] => 940.25
[pub_time] => 2013-06-03 17:36:21
)
//more currency ...
)
有了这样一个数组,就可以随意调用汇率数据了。
源代码下载
[download id=52]
将boc-exchage-rate目录放到主题根目录下,然后在主题functions.php中用如下代码引用,就可以看到示例。require_once('boc-exchange-rate/functions.php');
php获取中国银行汇率,用Simple Html Dom Parser 获取中国银行汇率相关推荐
- 极其简便的PHP HTML DOM解析器PHP Simple HTML DOM Parser/有中文手册
极其简便的PHP HTML DOM解析器PHP Simple HTML DOM Parser,有中文手册,对于需要分析HTML代码dom结构的php开发者来说,是一个极其有用的函数库,使用Jquery ...
- JavaScript 教程「9」:DOM 元素获取、属性修改
什么是 Web API Web API 是指网页服务器或者网页浏览器的应用程序接口.简单来讲,就是我们在编写 JavaScript 代码时,可以通过 Web API 来操作 HTML 网页和浏览器. ...
- php中html解析器,PHP Simple HTML DOM解析器
一直以来使用php解析html文档树都是一个难题.Simple HTML DOM parser 帮我们很好地解决了使用 php html 解析 问题.可以通过这个php类来解析html文档,对其中的h ...
- PHP Simple HTML DOM 简单使用
一般与curl配合使用 远程抓取页面内容后,利用 Simple HTML DOM生成dom结构,之后可以像jQuery 一样方便的操作dom <?php$ch = curl_init();//初 ...
- JavaScript基础12-day14【DOM查询(获取元素节点、获取元素节点的子节点)、全选练习、DOM增删改、DOM添加删除记录、Window对象方法】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- DOM操作获取标签方法、数据类型
一.操作 html 页面 document.getElementById('box'); // 选中一个id为box的标签 可以理解为从文档里面 通过一个 id:box 来获取 一个元素 // =&g ...
- Web APIs /APIs --DOM简述/DOM中获取元素方法/事件(含鼠标事件)/操作(含案例)
Web APIs Web APIs 和 JS 的关联性: Web APIs是 W3C 组织的标准,主要学习DOM 和 BOM Web APIs是 JS 所独有的部分 主要学习页面交互功能 Web AP ...
- 减少DOM的获取与修改次数
面试官经常会问你:"平时工作中,你怎么优化自己应用的性能?" 你回答如下:"我平时遵循以下几条原则来优化我的项目.以提高性能,主要有:" a. 减少DOM操作的 ...
- WebAPI第一天学习总结—— DOM、获取元素、事件基础、操作元素、节点操作
Web API介绍 API的概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访 ...
最新文章
- 论文笔记:孪生神经网络(Siamese Network)
- 【Python】comtypes模块Windows环境下使用批量转换成PDF文件
- myeclipse9安装SVN插件
- js html模板生成图片不显示,网页中图片不显示问题
- 第四次作业随笔(计算器第二步)
- 编程语言的发展趋势及未来方向 目录 编程语言的发展趋势及未来方向	1 第一章 一、历史回顾及趋势概述	2 第一节 首先,编程语言的发展非常缓慢。oo等等,但是远没有好上1000倍。	3 第二节 出现
- Setinterl全面介绍
- 第二章 随机变量及其分布 2.3 随机变量的分布函数
- 计算机科学丛书之第9章和第10章代码
- MySQL 数据库下载(windows)
- GB/T 25000.51-2016解读系列之易用性
- 约束满足问题 CSP【转】
- 了解无人驾驶汽车原理
- python并集_python去并集
- Java最简单的实现脏话屏蔽
- 2060显卡驱动最新版本_荣耀猎人游戏本V700 游戏本行业新生主力军-荣耀 ——快科技(驱动之家旗下媒体)-...
- 火狐浏览器关闭ipv6 dns
- lua-luaStudio安装
- 80款中国风 全动态PPT模板
- js模拟键盘某个键按下_键盘党如何优雅的使用Quicker
热门文章
- ubutun下mad catz rat7鼠标无法使用
- SpringMVC全注解环境搭建
- 中科亿海微FPGA应用(一、点灯)
- Office 2019 for Mac 安装
- 解决parallels desktop 下win10字体发虚的问题
- 用示波器看电感断电瞬间电压波形为什么是上下来回变换(阻尼振荡)而不是慢慢的变为0v?
- ### Error building SqlSession. ### The error may exist in com/itrs/mapper/UserMapper.xml ### Cause:
- 编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?
- windows7 home basic 安装DB2 Express-C
- 浅谈砍价拼团活动策划与效果 零起步引流