找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 962|回复: 0
打印 上一主题 下一主题

利用PHP命令行模式采集股票趋势信息

[复制链接]

2536

主题

2536

帖子

7532

积分

论坛元老

Rank: 8Rank: 8

积分
7532
跳转到指定楼层
楼主
发表于 2018-2-14 05:33:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

            话不多说,下面直接来看实现代码。
主要函数只有一个类实现(stock.class.php):
stockId = $stockId;
}

private function getUrl(){
  return "http://stockpage.10jqka.com.cn/" . $this -> stockId . "/";
}

private function getPage(){
  return file_get_contents($this -> getUrl());
}

//核心,通过正则匹配出 标签名,并将对应的方法的结果替换掉标签占位符
public function getInfo($template){
  $html = $this -> getPage();
  if( preg_match_all("/\{([^\}]*)\}/", $template, $result) ){
  foreach($result[1] as $index => $fun){
   $template = str_replace($result[0][$index], $this -> $fun($html), $template);
  }
  }
  return mb_convert_encoding($template, "GBK", "UTF-8"); //Windows的命令提示符编码是GBK
}

private function match($pattern, $html, $itemIndex = 1){
  $pattern = '/' . str_replace('/', '\/', $pattern) . '/';
  if( preg_match($pattern, $html, $result) ){
  return $result[$itemIndex];
  }else{
  return "-";
  }
}

//趋势的规则都一样,合并
private function qushiPattern($name){
  return '' . $name . ':\s*([^';
}

//支持的标签
private function name($html){
  return $this -> match("([^\( match('(\d+(\.\d+)?)', $html);
}
private function tips($html){
  return $this -> match('([^', $html);
}
private function qushishort($html){
  return $this -> match($this -> qushiPattern("短期趋势"), $html);
}
private function qushimiddle($html){
  return $this -> match($this -> qushiPattern("中期趋势"), $html);
}
private function qushilong($html){
  return $this -> match($this -> qushiPattern("长期趋势"), $html);
}
}
?>
命令提示符中的调用方法如下(stock.php):
= 2){
require("stock.class.php");
$stockId = $argv[1];
$stock = new StockClass($stockId);
$temp = $stockId;
$temp .= " {name}"; //名称
$temp .= " {score}"; //评分
$temp .= " {tips}"; //描述
$temp .= " {qushishort}"; //短期趋势
$temp .= " {qushimiddle}"; //中期趋势
$temp .= " {qushilong}"; //长期趋势
//$temp .= " {zidingyi}"; //自定义,直接在StockClass增加zidingyi方法即可
$temp .= "\n";
echo $stock -> getInfo($temp);
}
?>
直接使用 *\php.exe stock.php 股票代码即可实现调用,每次输入太长的,可以用批处理简化。
将下面的代码保存为 stock.cmd。
@XXX\php.exe stock.php %1
运行结果:



这样就完成了单个股票趋势的采集,如果要采集所有的股票信息,可以保存为批处理文件(batch.cmd)
@echo off
call stock 000001
call stock 000002
call stock 000003
call stock 000004
call stock 000005
call stock 000006
call stock 000007
call stock 股票代码n...
双击打开即可显示,如果想保存到文件,可以执行 batch.cmd > log.txt,然后将结果复制到 Execl(或ET)即可进行更负责的分析。

以上就是利用PHP命令行模式采集股票趋势信息的全部内容,这个功能很方便实用,感兴趣的朋友们快快实践起来吧。
            
            
您可能感兴趣的文章:
  • php 读取shell管道传输过来的内容
  • PHP调用Linux的命令行执行文件压缩命令
  • php cli模式学习(PHP命令行模式)
  • php命令行使用方法和命令行参数说明
  • php命令行用法入门实例教程
  • PHP多线程编程之管道通信实例分析
  • php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
  • 如何通过Linux命令行使用和运行PHP脚本
  • PHP命令行执行整合pathinfo模拟定时任务实例
  • PHP7安装Redis扩展教程【Linux与Windows平台】
  • centos下yum搭建安装linux+apache+mysql+php环境教程
  • Linux安装PHP MongoDB驱动
  • Linux服务器安装PHP MongoDB扩展的方法
  • Linux平台PHP5.4设置FPM线程数量的方法
  • Linux平台php命令行程序处理管道数据的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端