利用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 相关文章推荐
11个PHP 分页脚本推荐
Aug 15 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
php GUID生成函数和类
Mar 10 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
微信支付开发发货通知实例
Jul 12 PHP
Zend Framework常用校验器详解
Dec 09 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 PHP
PHP基于进程控制函数实现多线程
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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
php UBB 解析实现代码
2011/11/27 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
Django 2.0版本的新特性抢先看!
2018/01/05 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
餐饮管理自我介绍信
2014/01/15 职场文书
我的长生果教学反思
2014/04/28 职场文书
小学生通知书评语
2014/12/31 职场文书
邀请函的格式
2015/01/30 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS