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 获取中国银行汇率相关推荐

  1. 极其简便的PHP HTML DOM解析器PHP Simple HTML DOM Parser/有中文手册

    极其简便的PHP HTML DOM解析器PHP Simple HTML DOM Parser,有中文手册,对于需要分析HTML代码dom结构的php开发者来说,是一个极其有用的函数库,使用Jquery ...

  2. JavaScript 教程「9」:DOM 元素获取、属性修改

    什么是 Web API Web API 是指网页服务器或者网页浏览器的应用程序接口.简单来讲,就是我们在编写 JavaScript 代码时,可以通过 Web API 来操作 HTML 网页和浏览器. ...

  3. php中html解析器,PHP Simple HTML DOM解析器

    一直以来使用php解析html文档树都是一个难题.Simple HTML DOM parser 帮我们很好地解决了使用 php html 解析 问题.可以通过这个php类来解析html文档,对其中的h ...

  4. PHP Simple HTML DOM 简单使用

    一般与curl配合使用 远程抓取页面内容后,利用 Simple HTML DOM生成dom结构,之后可以像jQuery 一样方便的操作dom <?php$ch = curl_init();//初 ...

  5. JavaScript基础12-day14【DOM查询(获取元素节点、获取元素节点的子节点)、全选练习、DOM增删改、DOM添加删除记录、Window对象方法】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

  6. DOM操作获取标签方法、数据类型

    一.操作 html 页面 document.getElementById('box'); // 选中一个id为box的标签 可以理解为从文档里面 通过一个 id:box 来获取 一个元素 // =&g ...

  7. Web APIs /APIs --DOM简述/DOM中获取元素方法/事件(含鼠标事件)/操作(含案例)

    Web APIs Web APIs 和 JS 的关联性: Web APIs是 W3C 组织的标准,主要学习DOM 和 BOM Web APIs是 JS 所独有的部分 主要学习页面交互功能 Web AP ...

  8. 减少DOM的获取与修改次数

    面试官经常会问你:"平时工作中,你怎么优化自己应用的性能?" 你回答如下:"我平时遵循以下几条原则来优化我的项目.以提高性能,主要有:" a. 减少DOM操作的 ...

  9. WebAPI第一天学习总结—— DOM、获取元素、事件基础、操作元素、节点操作

    Web API介绍 API的概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访 ...

最新文章

  1. 论文笔记:孪生神经网络(Siamese Network)
  2. 【Python】comtypes模块Windows环境下使用批量转换成PDF文件
  3. myeclipse9安装SVN插件
  4. js html模板生成图片不显示,网页中图片不显示问题
  5. 第四次作业随笔(计算器第二步)
  6. 编程语言的发展趋势及未来方向 目录 编程语言的发展趋势及未来方向 1 第一章 一、历史回顾及趋势概述 2 第一节 首先,编程语言的发展非常缓慢。oo等等,但是远没有好上1000倍。 3 第二节 出现
  7. Setinterl全面介绍
  8. 第二章 随机变量及其分布 2.3 随机变量的分布函数
  9. 计算机科学丛书之第9章和第10章代码
  10. MySQL 数据库下载(windows)
  11. GB/T 25000.51-2016解读系列之易用性
  12. 约束满足问题 CSP【转】
  13. 了解无人驾驶汽车原理
  14. python并集_python去并集
  15. Java最简单的实现脏话屏蔽
  16. 2060显卡驱动最新版本_荣耀猎人游戏本V700 游戏本行业新生主力军-荣耀 ——快科技(驱动之家旗下媒体)-...
  17. 火狐浏览器关闭ipv6 dns
  18. lua-luaStudio安装
  19. 80款中国风 全动态PPT模板
  20. js模拟键盘某个键按下_键盘党如何优雅的使用Quicker

热门文章

  1. ubutun下mad catz rat7鼠标无法使用
  2. SpringMVC全注解环境搭建
  3. 中科亿海微FPGA应用(一、点灯)
  4. Office 2019 for Mac 安装
  5. 解决parallels desktop 下win10字体发虚的问题
  6. 用示波器看电感断电瞬间电压波形为什么是上下来回变换(阻尼振荡)而不是慢慢的变为0v?
  7. ### Error building SqlSession. ### The error may exist in com/itrs/mapper/UserMapper.xml ### Cause:
  8. 编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?
  9. windows7 home basic 安装DB2 Express-C
  10. 浅谈砍价拼团活动策划与效果 零起步引流