利用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基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
php中看实例学正则表达式
Dec 25 PHP
php中大括号作用介绍
Mar 22 PHP
php计算十二星座的函数代码
Aug 21 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
CI框架集成Smarty的方法分析
May 17 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
PHP7 整型处理机制修改
Mar 09 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
FCKeditor的安装(PHP)
2007/01/13 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
咖啡蛋糕店创业计划书
2014/01/28 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
班长演讲稿范文
2014/04/24 职场文书
社区科普工作方案
2014/06/03 职场文书
人事任命书格式
2014/06/05 职场文书
五一促销活动总结
2014/07/01 职场文书
博士生专家推荐信
2014/09/26 职场文书
教师师德工作总结2015
2015/07/22 职场文书
教师外出学习心得体会
2016/01/18 职场文书