简单采集了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树的代码,可以嵌套任意层
Oct 09 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
php获取域名的google收录示例
Mar 24 PHP
php常见的魔术方法详解
Dec 25 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
PHP中的一些常用函数收集
May 26 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
Thinkphp3.2实用篇之计算型验证码示例
Feb 09 PHP
php 一维数组的循环遍历实现代码
Apr 10 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
PHP删除数组中特定元素的两种方法
Feb 28 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将数组转换成csv格式文件输出的方法
2015/03/14 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
再谈javascript原型继承
2014/11/10 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
Python实现字典去除重复的方法示例
2017/07/31 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
python把转列表为集合的方法
2019/06/28 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
python爬取youtube视频的示例代码
2021/03/03 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
Bootstrap 学习分享
2012/11/12 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
党员公开承诺事项
2014/03/25 职场文书
项目负责人任命书
2014/06/04 职场文书
小学生毕业评语
2014/12/26 职场文书
未中标通知书
2015/04/17 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server