利用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_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
UCenter Home二次开发指南
May 28 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
PHP Memcached应用实现代码
Feb 08 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP实现微信提现功能
Sep 30 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php中switch语句用法详解
2015/08/17 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
js同时按下两个方向键
2007/12/01 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
一些Solaris面试题
2013/03/22 面试题
运动会100米解说词
2014/01/23 职场文书
护校行动方案
2014/05/31 职场文书
给老婆的道歉信
2015/01/20 职场文书
关于EntityWrapper的in用法
2022/03/22 Java/Android
浅谈MySQL中的六种日志
2022/03/23 MySQL