一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

PHP命令行采集所有股票趋势信息程序

时间:2016-08-08 编辑:简简单单 来源:一聚教程网

最近帮朋友写了一个简单的股票采集工具,采集的同花顺股票趋势信息,使用php命令行模式编写。只完成了采集部分功能,将输出的数据复制到execl(或ET)分析,比任何后台都方便。

主要函数只有一个类实现(stock.class.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 '

' . $name . ':
\s*
([^<]*)
';
        }
        
        //支持的标签
        private function name($html){
            return $this -> match("([^\(<]*)\(", $html, 1);<br />         }<br />         private function score($html){<br />             return $this -> match('<span class="analyze-num">(\d+(\.\d+)?)</span>', $html);<br />         }<br />         private function ti<a href="/fw/photo.html" target="_blank">ps</a>($html){<br />             return $this -> match('<span class="analyze-tips">([^<]*)</span>', $html);<br />         }<br />         private function qushishort($html){<br />             return $this -> match($this -> qushiPattern("短期趋势"), $html);<br />         }<br />         private function qushimiddle($html){<br />             return $this -> match($this -> qushiPattern("中期趋势"), $html);<br />         }<br />         private function qushilong($html){<br />             return $this -> match($this -> qushiPattern("长期趋势"), $html);<br />         }<br />     }<br /> ?></p> <p>命令提示符中的调用方法如下(stock.php):</p> <p><br /> <?php<br />      <br />     if(count($argv) >= 2){<br />         require("stock.class.php");<br />         $stockId = $argv[1];<br />         $stock = new StockClass($stockId);<br />         $temp = $stockId;<br />         $temp .= "  {name}";    //名称<br />         $temp .= "  {score}";   //评分<br />         $temp .= "  {tips}";    //描述<br />         $temp .= "  {qushishort}";  //短期趋势<br />         $temp .= "  {qushimiddle}"; //中期趋势<br />         $temp .= "  {qushilong}";   //长期趋势<br />         //$temp .= "    {zidingyi}";    //自定义,直接在StockClass增加zidingyi方法即可<br />         $temp .= "\n";<br />         echo $stock -> getInfo($temp);<br />     }<br /> ?></p> <p>直接使用 *\php.exe stock.php 股票代码即可实现调用,每次输入太长的,可以用批处理简化。将下面的代码保存为 stock.cmd。</p> <p><br /> @XXX\php.exe stock.php %1<br /> 运行结果:</p> <p> </p> <center><a href="https://img.111com.net/get_pic/2016/08/08/image57a88e999f2735.06506587.jpg" class="js-smartPhoto-pc" target="_blank"><img alt="" src="https://img.111com.net/get_pic/2016/08/08/image57a88e999f2735.06506587.jpg" /></a></center> <p>这样就完成了单个股票趋势的采集,如果要采集所有的股票信息,可以保存为批处理文件(batch.cmd)</p> <p>1</p> <p>@echo off<br /> call stock 000001<br /> call stock 000002<br /> call stock 000003<br /> call stock 000004<br /> call stock 000005<br /> call stock 000006<br /> call stock 000007<br /> call stock 股票代码n...<br /> 双击打开即可显示,如果想保存到文件,可以执行 batch.cmd > log.txt,然后将结果复制到 Execl(或ET)即可进行更负责的分析。</p> <center><a href="https://img.111com.net/get_pic/2016/08/08/image57a88ea84f4608.49383631.jpg" class="js-smartPhoto-pc" target="_blank"><img alt="" src="https://img.111com.net/get_pic/2016/08/08/image57a88ea84f4608.49383631.jpg" /></a></center> </div> <div class="pages art-detail"> </div> <ul class="TurnPage"> <li class="TurnPage-left"> <p> <span>上一个:</span> <a href="https://www.111com.net/phper/php-mb/116418.htm" class="maxWidth">Laravel 默认重置密码功能代码重构方法</a> </p> </li> <li class="TurnPage-right"> <p> <span>下一个:</span> <a href="https://www.111com.net/phper/php-cy/116422.htm" class="maxWidth">php curl访问调用https时报错解决办法</a> </p> </li> </ul> <div class="articles"> <div class="tit02"> <h4>相关文章</h4> </div> <ul> <li> <a target="_blank" href="https://www.111com.net/phper/php/131242.htm">php怎么运行?php程序的运行方法</a> <span>02-22</span> </li> <li> <a target="_blank" href="https://www.111com.net/phper/php/131263.htm">php怎么运行c语言程序?利用php调用C语言 扩展PHP的功能</a> <span>02-22</span> </li> <li> <a target="_blank" href="https://www.111com.net/phper/php/127210.htm">怎么利用register_shutdown_function判断php程序是否执行完</a> <span>01-05</span> </li> <li> <a target="_blank" href="https://www.111com.net/sys/linux/127075.htm">使用PM2守护PHP命令行程序教程</a> <span>01-04</span> </li> <li> <a target="_blank" href="https://www.111com.net/phper/php/120473.htm">php计算年龄精准到年月日的程序</a> <span>10-02</span> </li> <li> <a target="_blank" href="https://www.111com.net/phper/31/117452.htm">PHP程序时出现 Fatal error: Maximum execution time of 30 seconds exceeded in 提示</a> <span>08-20</span> </li> </ul> </div> </div> </div> </div> </div> <div class="hot-column"> <div class="cont"> <div class="tit"> <h4>热门栏目</h4> </div> <ul class="clearfix"> <li> <h6><a href="https://www.111com.net/phper/php.html" target="_blank">php教程</a></h6> <a href="https://www.111com.net/list-45/" target="_blank">php入门</a> <a href="https://www.111com.net/list-46/" target="_blank">php安全</a> <a href="https://www.111com.net/list-47/" target="_blank">php安装</a> <a href="https://www.111com.net/list-48/" target="_blank">php常用代码</a> <a href="https://www.111com.net/list-49/" target="_blank">php高级应用</a> </li> <li> <h6><a href="https://www.111com.net/net/net.html" target="_blank">asp.net教程</a></h6> <a href="https://www.111com.net/list-78/" target="_blank">基础入门</a> <a href="https://www.111com.net/list-79/" target="_blank">.Net开发</a> <a href="https://www.111com.net/list-80/" target="_blank">C语言</a> <a href="https://www.111com.net/list-81/" target="_blank">VB.Net语言</a> <a href="https://www.111com.net/list-82/" target="_blank">WebService</a> </li> <li> <h6><a href="https://www.111com.net/sj/index.html" target="_blank">手机开发</a></h6> <a href="https://www.111com.net/list-208/" target="_blank">安卓教程</a> <a href="https://www.111com.net/list-209/" target="_blank">ios7教程</a> <a href="https://www.111com.net/list-210/" target="_blank">Windows Phone</a> <a href="https://www.111com.net/list-211/" target="_blank">Windows Mobile</a> <a href="https://www.111com.net/list-212/" target="_blank">手机常见问题</a> </li> <li> <h6><a href="https://www.111com.net/cssdiv/css.html" target="_blank">css教程</a></h6> <a href="https://www.111com.net/list-99/" target="_blank">CSS入门</a> <a href="https://www.111com.net/list-100/" target="_blank">常用代码</a> <a href="https://www.111com.net/list-101/" target="_blank">经典案例</a> <a href="https://www.111com.net/list-102/" target="_blank">样式布局</a> <a href="https://www.111com.net/list-103/" target="_blank">高级应用</a> </li> <li> <h6><a href="https://www.111com.net/wy/yw.html" target="_blank">网页制作</a></h6> <a href="https://www.111com.net/list-136/" target="_blank">设计基础</a> <a href="https://www.111com.net/list-137/" target="_blank">Dreamweaver</a> <a href="https://www.111com.net/list-138/" target="_blank">Frontpage</a> <a href="https://www.111com.net/list-139/" target="_blank">js教程</a> <a href="https://www.111com.net/list-140/" target="_blank">XNL/XSLT</a> </li> <li> <h6><a href="https://www.111com.net/office/index.html" target="_blank">办公数码</a></h6> <a href="https://www.111com.net/list-236/" target="_blank">word</a> <a href="https://www.111com.net/list-237/" target="_blank">excel</a> <a href="https://www.111com.net/list-238/" target="_blank">powerpoint</a> <a href="https://www.111com.net/list-239/" target="_blank">金山WPS</a> <a href="https://www.111com.net/list-240/" target="_blank">电脑新手</a> </li> <li> <h6><a href="https://www.111com.net/jsp/jsp.html" target="_blank">jsp教程</a></h6> <a href="https://www.111com.net/list-68/" target="_blank">Application与Applet</a> <a href="https://www.111com.net/list-69/" target="_blank">J2EE/EJB/服务器</a> <a href="https://www.111com.net/list-70/" target="_blank">J2ME开发</a> <a href="https://www.111com.net/list-71/" target="_blank">Java基础</a> <a href="https://www.111com.net/list-72/" target="_blank">Java技巧及代码</a> </li> </ul> </div> </div> <div class="footer"> <div class="cont"> <p> <a href="https://www.111com.net/" target="_self">一聚教程网</a>| <a href="https://www.111com.net/us/us.html" class="about" target="_self">关于我们</a>| <a href="https://www.111com.net/us/me.html" class="contact" target="_self">联系我们</a>| <a href="https://www.111com.net/us/ads.html" class="gg_contact" target="_self">广告合作</a>| <a href="https://www.111com.net/us/link.html" class="friend_link" target="_self">友情链接</a>| <a href="https://www.111com.net/us/bcinfo.html" class="copyright_notice" target="_self">版权声明</a> </p> <p> <span>copyRight@2007-2024 www.111COM.NET AII Right Reserved <a href="https://beian.miit.gov.cn/" target="_blank" class="beian">苏ICP备17065847号-2</a> </span> </p> <p> <span> 网站内容来自网络整理或网友投稿如有侵权行为请邮件:yijucomnet@163.com 我们24小时内处理 </span> </p> </div> </div> <script src="https://assets.111com.net/js/stat.js?v=2024022101"></script> <script src="https://api.111com.net/api/stat/hits?type=article&id=116421"></script> </body> </html>