一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

PHP命令行采集所有股票趋势信息程序

时间:2022-06-24 17:46:02 编辑:袖梨 来源:一聚教程网

最近帮朋友写了一个简单的股票采集工具,采集的同花顺股票趋势信息,使用php命令行模式编写。只完成了采集部分功能,将输出的数据复制到execl(或ET)分析,比任何后台都方便。

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

class StockClass{
public $stockId;

public function __construct($stockId){
$this -> stockId = $stockId;
}

private function getUrl(){
return "http://stockpage.10jqka.*co**m.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("([^( }<br> private function score($html){<br> return $this -> match('<span class="analyze-num">(d+(.d+)?)</span>', $html);<br> }<br> private function ti<a href="/fw/photo.html" target="_blank">ps</a>($html){<br> return $this -> match('<span class="analyze-tips">([^', $html);<br> }<br> private function qushishort($html){<br> return $this -> match($this -> qushiPattern("短期趋势"), $html);<br> }<br> private function qushimiddle($html){<br> return $this -> match($this -> qushiPattern("中期趋势"), $html);<br> }<br> private function qushilong($html){<br> return $this -> match($this -> qushiPattern("长期趋势"), $html);<br> }<br> }<br> ?> <p>命令提示符中的调用方法如下(stock.php):</p> <p><br> <?php <br /> <br> if(count($argv) >= 2){<br> require("stock.class.php");<br> $stockId = $argv[1];<br> $stock = new StockClass($stockId);<br> $temp = $stockId;<br> $temp .= " {name}"; //名称<br> $temp .= " {score}"; //评分<br> $temp .= " {tips}"; //描述<br> $temp .= " {qushishort}"; //短期趋势<br> $temp .= " {qushimiddle}"; //中期趋势<br> $temp .= " {qushilong}"; //长期趋势<br> //$temp .= " {zidingyi}"; //自定义,直接在StockClass增加zidingyi方法即可<br> $temp .= "n";<br> echo $stock -> getInfo($temp);<br> }<br> ?></p> <p>直接使用 *php.exe stock.php 股票代码即可实现调用,每次输入太长的,可以用批处理简化。将下面的代码保存为 stock.cmd。</p> <p><br> @XXXphp.exe stock.php %1<br> 运行结果:</p> <p> </p> <center><a href="https://img.111cn.net/uploads/20220923/img_632dad7b74ff130.jpg" class="js-smartPhoto-pc" target="_blank"><img alt="" src="https://img.111cn.net/uploads/20220923/img_632dad7b74ff130.jpg"></a></center> <p>这样就完成了单个股票趋势的采集,如果要采集所有的股票信息,可以保存为批处理文件(batch.cmd)</p> <p>1</p> <p>@echo off<br> call stock 000001<br> call stock 000002<br> call stock 000003<br> call stock 000004<br> call stock 000005<br> call stock 000006<br> call stock 000007<br> call stock 股票代码n...<br> 双击打开即可显示,如果想保存到文件,可以执行 batch.cmd > log.txt,然后将结果复制到 Execl(或ET)即可进行更负责的分析。</p> <center><a href="https://img.111cn.net/uploads/20220923/img_632dad7b9fc1831.jpg" class="js-smartPhoto-pc" target="_blank"><img alt="" src="https://img.111cn.net/uploads/20220923/img_632dad7b9fc1831.jpg"></a></center></span>

热门栏目