简单采集了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字符串的编码问题的详细介绍
Apr 27 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
更改localhost为其他名字的方法
Feb 10 PHP
php获取文件大小的方法
Feb 26 PHP
谈谈 PHP7新增功能
Dec 16 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
PHP实现简易计算器功能
Aug 28 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
php函数式编程简单示例
Aug 08 PHP
Laravel 实现数据软删除功能
Aug 21 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
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
php把数组值转换成键的方法
2015/07/13 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
js实现微信聊天效果
2020/08/09 Javascript
Python教程之全局变量用法
2016/06/27 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
Sanic框架应用部署方法详解
2018/07/18 Python
python批量修改图片大小的方法
2018/07/24 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
python扫描线填充算法详解
2020/02/19 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
业务员的岗位职责
2014/03/15 职场文书
小学庆六一活动总结
2014/08/28 职场文书
检讨书怎么写?
2019/06/21 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL