利用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面试题附答案
Jan 07 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
PHP可逆加密/解密函数分享
Sep 25 PHP
php生成excel文件的简单方法
Feb 08 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
dedecms中使用php语句指南
2014/11/13 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
PHP 图片处理
2020/09/16 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
pyramid配置session的方法教程
2013/11/27 Python
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
介绍Python中的__future__模块
2015/04/27 Python
python实现换位加密算法的示例
2018/10/14 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
Python更新所有已安装包的操作
2020/02/13 Python
python和go语言的区别是什么
2020/07/20 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
《狼》教学反思
2014/03/02 职场文书
高中军训感言800字
2014/03/05 职场文书
开学典礼策划方案
2014/05/28 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle