简单采集了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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
destoon找回管理员密码的方法
Jun 21 PHP
php遍历数组的4种方法总结
Jul 05 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 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实现定时生成HTML网站首页实例代码
2008/11/20 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
PHP的加密方式及原理
2012/06/14 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
js计算精度问题小结
2013/04/22 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
Python接收手机短信的代码整理
2020/08/02 Python
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
五一服装活动方案
2014/01/11 职场文书
预防传染病方案
2014/06/14 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python