利用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过滤危险html代码的函数
Jul 22 PHP
PHP file_exists问题杂谈
May 07 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
php动态添加url查询参数的方法
Apr 14 PHP
培养自己的php编码规范
Sep 28 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
phpstudy隐藏index.php的方法
Sep 21 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 gzip压缩输出的实现方法
2013/04/27 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
详解php实现页面静态化原理
2017/06/21 PHP
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Python中的id()函数指的什么
2017/10/17 Python
python-opencv颜色提取分割方法
2018/12/08 Python
python实现加密的方式总结
2020/01/19 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
电气工程和自动化自荐信范文
2013/12/25 职场文书
《乌塔》教学反思
2014/02/17 职场文书
先进事迹演讲稿
2014/09/01 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
2014年电工工作总结
2014/11/20 职场文书
小学四年级作文之写景
2019/08/23 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
解决golang 关于全局变量的坑
2021/05/06 Golang