简单采集了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 相关文章推荐
文章推荐系统(三)
Oct 09 PHP
聊天室php&amp;mysql(五)
Oct 09 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
php操作xml
Oct 27 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
php实现的错误处理封装类实例
Jun 20 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
Laravel 验证码认证学习记录小结
Dec 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
基于文本的访客签到簿
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
php array_search() 函数使用
2010/04/13 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
学习JavaScript的最佳方法分享
2011/10/21 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
javascript常用的设计模式
2017/02/09 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
numpy自动生成数组详解
2017/12/15 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
工作的心得体会
2013/12/31 职场文书
迎接领导欢迎词
2014/01/11 职场文书
卖房授权委托书样本
2014/10/05 职场文书
求职自我评价范文
2015/03/09 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
MySQL数据库查询之多表查询总结
2022/08/05 MySQL