利用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环境搭建最新方法
Sep 05 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
php的正则处理函数总结分析
Jun 20 PHP
PHP XML备份Mysql数据库
May 27 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
ThinkPHP处理Ajax返回的方法
Nov 22 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 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
剖析 PHP 中的输出缓冲
2006/12/21 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
python使用Berkeley DB数据库实例
2014/09/26 Python
python通过socket查询whois的方法
2015/07/18 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
仓库主管的岗位职责
2013/12/04 职场文书
公务员综合考察材料
2014/02/01 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
校园文化标语
2014/06/18 职场文书
教室标语大全
2014/06/21 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
2015大学迎新标语
2015/07/16 职场文书