首页 > 开发 > PHP > 正文

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

2024-05-04 22:28:48
字体:
来源:转载
供稿:网友

话不多说,下面直接来看实现代码。

主要函数只有一个类实现(stock.class.php):

<?php class StockClass{ public $stockId;  public function __construct($stockId){  $this -> 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 '<div class="txt-aside">' . $name . ':</div>/s*<div class="txt-main">([^<]*)</div>'; }  //支持的标签 private function name($html){  return $this -> match("<title>([^/(<]*)/(", $html, 1); } private function score($html){  return $this -> match('<span class="analyze-num">(/d+(/./d+)?)</span>', $html); } private function tips($html){  return $this -> match('<span class="analyze-tips">([^<]*)</span>', $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):

<?php  if(count($argv) >= 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

运行结果:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表