简单采集了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函数解决SQL injection
Oct 09 PHP
来自PHP.NET的入门教程
Oct 09 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
Drupal7中常用的数据库操作实例
Mar 02 PHP
php无限遍历文件夹示例分享
Mar 04 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
php强制更新图片缓存的方法
Feb 11 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
WAF的正确bypass
Jan 05 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
PHPstorm快捷键(分享)
Jul 17 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 5.3.0 安装分析心得
2009/08/07 PHP
flash用php连接数据库的代码
2011/04/21 PHP
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
PHP时间处理类操作示例
2018/09/05 PHP
PDO::commit讲解
2019/01/27 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
Python GUI编程完整示例
2019/04/04 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
Python面向对象编程基础实例分析
2020/01/17 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
瀑布模型都有哪些优缺点
2014/06/23 面试题
急诊科护士自我鉴定
2013/10/14 职场文书
股东协议书范本
2014/04/14 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
北京导游词
2015/02/12 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏