利用PHP命令行模式采集股票趨勢信息
話不多說,下面直接來看實現(xiàn)代碼。
主要函數(shù)只有一個類實現(xiàn)(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 "-";
}
}
//趨勢的規(guī)則都一樣,合并
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);
}
}
?>
命令提示符中的調(diào)用方法如下(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 股票代碼即可實現(xiàn)調(diào)用,每次輸入太長的,可以用批處理簡化。
將下面的代碼保存為 stock.cmd。
@XXX\php.exe stock.php %1
運行結果:

這樣就完成了單個股票趨勢的采集,如果要采集所有的股票信息,可以保存為批處理文件(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...
雙擊打開即可顯示,如果想保存到文件,可以執(zhí)行 batch.cmd > log.txt,然后將結果復制到 Execl(或ET)即可進行更負責的分析。

以上就是利用PHP命令行模式采集股票趨勢信息的全部內(nèi)容,這個功能很方便實用,感興趣的朋友們快快實踐起來吧。
相關文章
dedecms 批量提取第一張圖片最為縮略圖的代碼(文章+軟件)
用了dedecms自帶的縮略圖批量獲取,因為代碼好像是只適用于文字,對于軟件就不能了,或兩者都不能。從網(wǎng)站看到了這段代碼,對于dedecms 5.1是沒問題的。2009-10-10
Yii2-GridView 中讓關聯(lián)字段帶搜索和排序功能示例
這篇文章主要介紹了Yii2-GridView 中讓關聯(lián)字段帶搜索和排序功能示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-01-01
Zend Framework入門教程之Zend_Mail用法示例
這篇文章主要介紹了Zend Framework中Zend_Mail用法,結合實例形式分析了Zend Framework中Zend_Mail組件的功能、使用步驟與相關操作技巧,需要的朋友可以參考下2016-12-12
php bcdiv和bcmul 函數(shù)的怪異現(xiàn)象
這篇文章主要介紹了php bcdiv和bcmul 函數(shù)的怪異現(xiàn)象,本文通過實例代碼講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
thinkphp5加layui實現(xiàn)圖片上傳功能(帶圖片預覽)
這篇文章主要介紹了thinkphp5加layui實現(xiàn)圖片上傳功能(帶圖片預覽)的相關資料,需要的朋友可以參考下2023-03-03

