利用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脚本中include文件出错解决方法
Nov 20 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
php实现图片按比例截取的方法
Feb 06 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
php微信开发之关键词回复功能
Jun 13 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 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删除数组中空值的方法介绍
2014/04/14 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
PHP递归算法的简单实例
2019/02/28 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python实现的建造者模式示例
2018/08/06 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
详解爬虫被封的问题
2019/04/23 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Python中itertools的用法详解
2020/02/07 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
家居饰品店创业计划书
2014/01/31 职场文书
工作决心书范文
2014/03/11 职场文书
车间主任岗位职责
2014/03/16 职场文书
师范生求职自荐信
2014/06/14 职场文书
计划生育标语
2014/06/23 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
优秀党员推荐材料
2014/12/18 职场文书
音乐课外活动总结
2015/05/09 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android