简单采集了yahoo的一些数据_php技巧

以前在公司就写过类似的东西,这次是帮以前的上司写了一个简单的采集程序。

    很简单的。。汗。没什么技术含量的。
    数据来源: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); 

?> 

时间: 2024-09-25 15:51:05

简单采集了yahoo的一些数据_php技巧的相关文章

php简单实现查询数据库返回json数据_php技巧

示例代码一: // 设置返回json格式数据 header('content-type:application/json;charset=utf8'); //连接数据库 $link = mysql_connect("localhost", "root", "root") or die("Unable to connect to the MySQL!"); mysql_query("SET NAMES 'UTF8'&q

Joomla下利用configuration.php存储简单数据_php技巧

写入过程 复制代码 代码如下: // Get the path of the configuration file $fname = JPATH_CONFIGURATION.DS.'configuration.php'; // clear cache $cache = JFactory::getCache(); $cache->clean(); // Update the credentials with the new settings $config =& JFactory::getCo

php中使用Curl、socket、file_get_contents三种方法POST提交数据_php技巧

抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl.直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了.我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好. php中curl和file_get_content的一

解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法_php技巧

-------------------------------------------------------- 风十三 落伍首发  转载请注明作者和出处 ------------------------------------------------------ 1.如何修改默认发布为动态页: 这个其实很简单,会改html就可以了!把dede文件夹打开,用编辑器打开article_add.php,找到<td width="90">发布选项:</td>     

PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)_php技巧

通过curl_setopt()函数可以方便快捷的抓取网页(采集很方便大笑),curl_setopt 是PHP的一个扩展库      使用条件:需要在php.ini 中配置开启.(PHP 4 >= 4.0.2)        //取消下面的注释 extension=php_curl.dll 在Linux下面,需要重新编译PHP了,编译时,你需要打开编译参数--在configure命令上加上"–with-curl" 参数. 1. 一个抓取网页的简单案例: [php] view pla

PHP 采集程序中常用的函数_php技巧

复制代码 代码如下: //获得当前的脚本网址 function get_php_url() { if(!empty($_SERVER["REQUEST_URI"])) { $scriptName = $_SERVER["REQUEST_URI"]; $nowurl = $scriptName; } else { $scriptName = $_SERVER["PHP_SELF"]; if(empty($_SERVER["QUERY_ST

SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据_php技巧

1.SESSION信息保存在哪? 复制代码 代码如下: <?php session_start(); $_SESSION['name']='marcofly'; ?> session默认是保存到c:\windows\temp目录下,但是通过修改php.ini中的session.save_path值可以改变session的保存路径. 如:session.save_path = "d:/wamp/tmp" 执行该代码后,就会在d:/wamp/tmp目录下,新增一个文件名为:se

php简单实现sql防注入的方法_php技巧

本文实例讲述了php简单实现sql防注入的方法.分享给大家供大家参考,具体如下: 这里没有太多的过滤,主要是针对php和mysql的组合. 一般性的防注入,只要使用php的 addslashes 函数就可以了. 以下是一段copy来的代码: PHP代码: $_POST = sql_injection($_POST); $_GET = sql_injection($_GET); function sql_injection($content) { if (!get_magic_quotes_gpc

PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据_php技巧

思维导图 介绍    承接上文的PHP 杂谈<重构-改善既有代码的设计>之 重新组织你的函数继续重构方面的内容.   这章主要针对数据的重构.   1.争论的声音--直接访问Field还是通过函数(Accessor)访问Field  2.修改Array为Object:当你看到一个Array很像一个数据结构,你可以使用Replace Array with Object,把Array变成一个对象.--数据结构更清晰.      专业术语   accessor:访问者,存储器--在本文翻译为&quo