利用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 相关文章推荐
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
在PHP中使用Sockets 从Usenet中获取文件
Jan 10 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
PHP中浮点数计算比较及取整不准确的解决方法
Jan 09 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 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
php牛逼的面试题分享
2013/01/18 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
详解Python3中字符串中的数字提取方法
2017/01/14 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python实现维吉尼亚加密法
2019/03/20 Python
利用Python实现kNN算法的代码
2019/08/16 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
师范生实习自我鉴定
2013/11/01 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
诚信承诺书范文
2014/03/27 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
计算机网络专业求职信
2014/06/05 职场文书
社区志愿者培训方案
2014/06/10 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
城南旧事观后感
2015/06/11 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
Golang全局变量加锁的问题解决
2021/05/08 Golang
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL