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


Posted in PHP onAugust 09, 2016

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

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

运行结果:

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

这样就完成了单个股票趋势的采集,如果要采集所有的股票信息,可以保存为批处理文件(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 相关文章推荐
社区(php&amp;&amp;mysql)六
Oct 09 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
如何设置mysql允许外网访问
Jun 04 PHP
PHP输出XML到页面的3种方法详解
Jun 06 PHP
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
thinkPHP中多维数组的遍历方法
Jan 09 PHP
CI框架的安全性分析
May 18 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
Yii框架安装简明教程
May 15 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 #PHP
php阳历转农历优化版
Aug 08 #PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 #PHP
常用PHP数组排序函数归纳
Aug 08 #PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 #PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 #PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 #PHP
You might like
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
php利用事务处理转账问题
2015/04/22 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
Python Deque 模块使用详解
2014/07/04 Python
python交易记录链的实现过程详解
2019/07/03 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
Python面向对象封装操作案例详解
2019/12/31 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
软件工程专业推荐信
2013/10/28 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
养成教育主题班会
2015/08/13 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
Java 写一个简单的图书管理系统
2022/04/26 Java/Android