利用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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
PHP 函数学习简单小结
Jul 08 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
PHP实现git部署的方法教程
Dec 19 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
php统计数组元素个数的方法
2015/07/02 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
js实现带三角符的手风琴效果
2017/03/01 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python实现的各种常见分布算法示例
2018/12/13 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
教师年度个人总结
2015/02/11 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
工作感想范文
2015/08/07 职场文书