简单采集了yahoo的一些数据


Posted in PHP onFebruary 14, 2007

以前在公司就写过类似的东西,这次是帮以前的上司写了一个简单的采集程序。

    很简单的。。汗。没什么技术含量的。
    数据来源:http://cn.finance.yahoo.co...
    演示地址:http://traffic02.100steps....

    (修改了下,增加了数据缓存功能。。汗,没有使用lite_cache了,自己写了个最简单的那种。。)

<?  
set_time_limit(0);  $max_time=3600;  
$cache_file='cache_yahoo.txt';  
$nowtime=time();  
if(!file_exists($cache_file)){  
    $filetime=0;  
}else{  
    $filetime=filemtime($cache_file);  
}  
if($filetime+$max_time<$nowtime){  
//更新  
    ob_start();  
function get_yahoo_info($url){  
    $content=file_get_contents($url);  
    $pattern='|<tr class="yfnc_modtitle1"><td><small><b>(.*)</b> \((.*)\)  (.*)</small></td><td align="right">|U';  
    preg_match_all($pattern,$content,$out);  
    $info['company_name']=$out[1][0];  
    $info['company_stock']=$out[2][0];  
    $pattern='|<td class="yfnc_tablehead1" width="52%">最近交易价:</td><td class="yfnc_tabledata1"><big><b>(.*)</b></big></td>|U';  
    preg_match_all($pattern,$content,$out);  
    $info['stock_price']=$out[1][0];  
    $pattern='|<td class="yfnc_tablehead1" width="52%">涨跌:</td><td class="yfnc_tabledata1">(.*)</td>|U';  
    preg_match_all($pattern,$content,$out);  
    $info['stock_upordown']=$out[1][0];  
    $pattern='|<td class="yfnc_tablehead1" width="54%">市值:</td><td class="yfnc_tabledata1">(.*)</td>|U';  
    preg_match_all($pattern,$content,$out);  
    $info['stock_value']=$out[1][0];      
    return $info;  
}  
$urls=explode(',',file_get_contents('url.txt'));  
$i=0;  
$matchs=array();  
foreach($urls as $url){  
    $rs=get_yahoo_info($url);  
    if(!empty($rs)){  
        $matchs[$i]=$rs;  
        $i++;  
        $rs='';  
    }  
}  
//print_r(get_yahoo_info('http://cn.finance.yahoo.com/q?s=000063.SZ'));  
?>  
<table border="1" width="100%" cellpadding="6" style="border-collapse: collapse" bordercolor="#8CBFF9" cellspacing="0" bgcolor="#DFEDFD">  
  <tr>  
    <td width="30" height="" valign="top" bordercolor="#ABD0FA" bgcolor="#E1EEFD" > </td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#E1EEFD" ><div align="center">公司名称</div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#E1EEFD" ><div align="center">股票代号</div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#E1EEFD" ><div align="center">股票价格</div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#E1EEFD" ><div align="center">股票涨幅</div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#E1EEFD" ><div align="center">市值</div></td>  
  </tr>  
  <?   
  $i=1;  
foreach($matchs as $match){  
  ?>  
  <tr>  
    <td height="" align="center" valign="top" bordercolor="#ABD0FA" bgcolor="#FFFFFF" ><?=$i?></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#FFFFFF" ><div align="center"><?=$match['company_name']?></div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#FFFFFF" ><div align="center"><?=$match['company_stock']?></div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#FFFFFF" ><div align="center"><?=$match['stock_price']?></div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#FFFFFF" ><div align="center"><?=$match['stock_upordown']?></div></td>  
    <td valign="top" bordercolor="#ABD0FA" bgcolor="#FFFFFF" ><div align="center"><?=$match['stock_value']?></div></td>  
  </tr>  
  <?   
  $i++;  
  }?>  
</table>  
<?   
    $content=ob_get_clean();  
    $fp=fopen($cache_file,'w');  
    if(!$fp)echo '打开文件失败';  
    if (flock($fp, LOCK_EX)) { // 进行排它型锁定  
        if(!fwrite($fp, $content))echo '文件写入失败';  
        flock($fp, LOCK_UN); // 释放锁定  
    } else {  
        //echo "Couldn't lock the file !";  
        if(!fwrite($fp, $content))echo '文件写入失败';  
    }  
    fclose($fp);  
    //echo 'cache time:'.time();  
    echo $content;  
}else{  
    //echo 'cache!';  
    echo file_get_contents($cache_file);  
}  
?> 
PHP 相关文章推荐
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
随时给自己贴的图片加文字的php代码
Mar 08 PHP
PHP 文件上传进度条的两种实现方法的代码
Nov 25 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php实现简单文件下载的方法
Jan 30 PHP
centos 7.2下搭建LNMP环境教程
Nov 20 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
php redis setnx分布式锁简单原理解析
Oct 23 PHP
自己前几天写的无限分类类
Feb 14 #PHP
用PHPdig打造属于你自己的Google[图文教程]
Feb 14 #PHP
php中的一个中文字符串截取函数
Feb 14 #PHP
PHP音乐采集(部分代码)
Feb 14 #PHP
一个数据采集类
Feb 14 #PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 #PHP
增加反向链接的101个方法 站长推荐
Jan 31 #PHP
You might like
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
webpack3之loader全解析
2017/10/26 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
微信小程序实现吸顶特效
2020/01/08 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
python实现电子词典
2020/04/23 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python中按值来获取指定的键
2019/03/04 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python re模块常见用法例举
2021/03/01 Python
在家更换处方镜片:Lensabl
2019/05/01 全球购物
户籍证明的格式
2014/01/13 职场文书
2014升学宴答谢词
2014/01/26 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
工程部部长岗位职责
2015/02/12 职场文书
工程款申请报告
2015/05/15 职场文书
元旦晚会开场白
2015/05/29 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫