简单采集了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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
ezSQL PHP数据库操作类库
May 16 PHP
php GeoIP的使用教程
Mar 09 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
PHP中的一些常用函数收集
May 26 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 PHP
如何在PHP中使用数组
Jun 09 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php cookie 登录验证示例代码
2009/03/16 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
php实现点击可刷新验证码
2015/11/07 PHP
PHP类的特性实例分析
2016/09/28 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python聊天室实例程序分享
2016/01/05 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
Python用户自定义异常的实现
2020/12/25 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
HEMA法国:荷兰原创设计
2019/02/21 全球购物
四风问题查摆剖析材料
2014/10/11 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
Android存储中最基本的文件存储方式
2022/04/30 Java/Android