利用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的ASP防火墙
Oct 09 PHP
粗略计算在线时间,bug:ip相同
Dec 09 PHP
php 使用post,get的一种简洁方式
Apr 25 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
php把字符串指定字符分割成数组的方法
Mar 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备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
jQuery参数列表集合
2011/04/06 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
利用python批量修改word文件名的方法示例
2017/10/17 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
应届毕业生个人自我评价
2013/09/20 职场文书
土木工程毕业生推荐信
2013/10/28 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2014年话务员工作总结
2014/11/19 职场文书
个人培训总结
2015/03/05 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书