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

主要函数只有一个类实现(stock.class.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 '

' . $name . ':

\s*

([^';

}

//支持的标签

private function name($html){

return $this -> match("

([^\(

}

private function score($html){

return $this -> 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):

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

运行结果:

这样就完成了单个股票趋势的采集,如果要采集所有的股票信息,可以保存为批处理文件(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 股票系统,利用PHP命令行模式采集股票趋势信息相关推荐

  1. 系统引导管理 之 用GRUB(包括WINGRUB)命令行模式引导安装Linux

    作者:北南南北 来自:LinuxSir.Org 提要:Linux的安装过程的引导有几种方法,一种是在DOS下通过loadlin进行安装:一种是通过lilo系统引导管理器进行引导:还有一种就是通过系统引 ...

  2. (已解决)win10+ubuntu18.04双系统,ubuntu锁屏后无法唤醒,重启黑屏闪烁无法进入命令行模式

    事发经过: 台式机双系统 win10 + Ubuntu16.04,大部分时间在Ubuntu16.04下工作.一个不小心(dist-upgrade)升级到了ubuntu18.04后,在一次锁屏后发现再也 ...

  3. mysql创建用户phpmyadmin_MySQL添加新用户和数据库(命令行模式和phpmyadmin)

    MYSQL添加新用户和数据库(命令行模式和phpmyadmin) 一.命令行模式 首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令 ...

  4. (转)php-cli模式学习(PHP命令行模式)

    php-cli模式学习(PHP命令行模式) 之前知道php-cli模式是一种类似shell命令式的执行php程序,不过一直以为这个是一种落后的方式,应该没有什么意义,因为从没有遇到过使用这个cli模式 ...

  5. linux三个命令模式切换,ubuntu16.04命令行模式和图形界面互相切换的两种解决办法,...

    ubuntu16.04命令行模式和图形界面互相切换的两种解决办法, 在ubuntu中,我们可以有两种工作模式,一种是纯字符的命令行模式,这种界面没有那么好操作,而且对命令要求比较熟悉,比较适合专业人士 ...

  6. php mysql 命令行模式_PHP 的命令行模式

    从版本 4.3.0 开始,PHP 提供了一种新类型的 SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Comm ...

  7. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  8. kali liunx使用心得之命令行模式下如何配置连接无线网络

    kali liunx使用心得之命令行模式下如何配置连接无线网络 最近在使用kali时出现了一点小小的问题,由于我安装的是win10和kali双系统,为了能够在kali界面下自由操作win10下的磁盘, ...

  9. PHP 的命令行模式

    被安全模式限制或屏蔽的函数Built-in web server 特点 在线手册:中文 英文PHP手册 PHP 的命令行模式 Table of Contents Built-in web server ...

最新文章

  1. php 全局搜索方法,php启用sphinx全文搜索的方法
  2. grpc通信原理_容器原理架构详解(全)
  3. 深入理解strncpy这个函数
  4. 奎屯电信助力智慧城市光网建设
  5. MYSQL数据库导入出错:#1046 - No database selected
  6. HDU - 7008 水题(打表)
  7. 3算法全称_全网最通俗的KMP算法图解
  8. vscode如何创建一个go项目_如何用手机创建一个网站
  9. 浅谈ASP.NET的内部机制(二)
  10. vscode 格式化某一段代码_vscode 如何自动格式化代码?
  11. html 实现复制功能
  12. 正弦定理c语言函数,正弦定理和余弦定理的所有公式
  13. 配置 Raspberry PI WiFi
  14. 「镁客早报」微软总市值超过苹果亚马逊;Linux内核出现漏洞
  15. c++11的regex使用
  16. tyvj 2053 [Nescafé29]穿越七色虹
  17. 6个杰出的国产APP推荐,你知道多少呢?
  18. CNN之绘画风格迁移-附源码地址
  19. 帆船运行员训练方法研究
  20. 【Windows】win10 禁止 IE 自动跳转到 Edge

热门文章

  1. puzzle(1036)数邻、多米诺骨牌
  2. 想到我爱你的绝对不正常
  3. python 透明图片合成_python:图片合成(PIL 库Image类模块)
  4. pattern和match的用法 java篇
  5. 2022年襄阳中级工程师职称水平能力测试成绩出来了吗?
  6. JVM调优之参数配置: -Xms -Xmx -Xmn -XX:+PrintGCDetails -XX:UseSerialGC -XX:SurvivorRadio -XX:NewRadio
  7. Flink的双流join介绍
  8. cad隐藏图层命令快捷键_cad解锁图层命令(cad图层全部解锁快捷键)
  9. 隐马尔可夫模型HMM
  10. 文献翻译:Comparative metagenomics of hydrocarbon and methane seeps of the Gulf of Mexico