利用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 has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
php读取html并截取字符串的简单代码
Nov 30 PHP
php foreach循环中使用引用的问题
Nov 06 PHP
php动态添加url查询参数的方法
Apr 14 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
Nov 15 PHP
php常用正则函数实例小结
Dec 29 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
PHP钩子实现方法解析
May 21 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面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
使用php计算排列组合的方法
2013/11/13 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
php代码架构的八点注意事项
2016/01/25 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
express express-session的使用小结
2018/12/12 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
详解Vue之计算属性
2020/06/20 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
Python rstrip()方法实例详解
2018/11/11 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
初婚初育证明
2014/01/14 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
php png失真的原因及解决办法
2021/11/17 PHP