Maison >développement back-end >tutoriel php >PHP utilise le mode ligne de commande pour collecter un exemple de code d'informations sur les tendances boursières
Pour les informations boursières, lorsque nous créons des sites Web de gestion financière, nous collectons uniquement des données à partir de sites portails. Il est impossible de générer des informations boursières par nous-mêmes. Jetons un coup d'œil à un article sur la collecte. toutes les données du programme d'information sur les tendances boursières PHP, les détails sont les suivants.
La fonction principale n'a qu'une seule implémentation de classe (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 '<p class="txt-aside">' . $name . ':</p>\s*<p class="txt-main">([^<]*)</p>'; } //支持的标签 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); } } ?>
La méthode d'appel dans l'invite de commande est la suivante (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); } ?>
Vous pouvez utiliser directement le code boursier *php.exe stock.php
pour implémenter l'appel si la saisie est trop longue à chaque fois. , vous pouvez utiliser le traitement par lots pour le simplifier.
Enregistrez le code ci-dessous sous stock.cmd.
@XXX\php.exe stock.php %1
Résultats en cours :
De cette manière, la collection des tendances boursières individuelles est terminé. Si Pour collecter toutes les informations de stock, vous pouvez les enregistrer en tant que fichier de traitement par lots (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...Double-cliquez pour l'ouvrir pour l'afficher. vous souhaitez l'enregistrer dans un fichier, vous pouvez exécuter
, puis copier les résultats dans Execl (ou ET) pour une analyse plus responsable. batch.cmd > log.txt
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!