Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden des PHP-Befehlszeilenmodus zum Sammeln von Aktientrendinformationen_php-Beispiel

Verwenden des PHP-Befehlszeilenmodus zum Sammeln von Aktientrendinformationen_php-Beispiel

WBOY
WBOYOriginal
2016-08-17 13:02:311029Durchsuche

Schauen wir uns ohne weitere Umschweife direkt den Implementierungscode an.

Die Hauptfunktion hat nur eine Klassenimplementierung (stock.class.php):

<&#63;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+)&#63;)</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);
 }
 }
&#63;>

Die Aufrufmethode in der Eingabeaufforderung lautet wie folgt (stock.php):

<&#63;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);
 }
&#63;>

Sie können den *php.exe stock.php -Aktiencode direkt verwenden, um den Aufruf zu realisieren. Wenn die Eingabe jedes Mal zu lang ist, können Sie die Stapelverarbeitung verwenden, um sie zu vereinfachen.

Speichern Sie den Code unten als stock.cmd.

@XXX\php.exe stock.php %1

Laufergebnis:

Damit ist die Erfassung der einzelnen Bestandstrends abgeschlossen. Wenn Sie alle Bestandsinformationen sammeln möchten, können Sie diese als Batch-Datei (batch.cmd) speichern

@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...

Doppelklicken Sie, um es zu öffnen und anzuzeigen. Wenn Sie es in einer Datei speichern möchten, können Sie batch.cmd > log.txt ausführen und die Ergebnisse dann zur genaueren Analyse nach Execl (oder ET) kopieren.

Das Obige ist der gesamte Inhalt der Verwendung des PHP-Befehlszeilenmodus zum Sammeln von Aktientrendinformationen. Diese Funktion ist sehr praktisch und praktisch.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn