下面我们实现一个具体的采集类,这个类用来采集 游戏币交易网站的游戏币价格和库存数据
我们共开发了几十个采集插件,打算将市面上所有的游戏币交易网站的数据都收集起来,
这是其中的一个,(有些必要的注释已经去除,太长了,而且都是一样的)
阅读(353) | 评论(0) | 转发(0) |
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
我们共开发了几十个采集插件,打算将市面上所有的游戏币交易网站的数据都收集起来,
这是其中的一个,(有些必要的注释已经去除,太长了,而且都是一样的)
<?php
//包含共用函数库
include_once('Gather_Base.php');
final class bank extends Gather_Base{
private $homepage='http://www.rmt-bank.co.jp/';
private $classname='bank';
private $encoding='shift-jis';
function __construct(){
//调用父类的构造方法,增加两个参数,
//一个是类名,一个是编码
parent::Gather_Base($this->classname,$this->encoding);
}
//得到数据
function getData(){
$games=$this->getGames($this->homepage);
if($games===false)return false;
//每个游戏处理
foreach($games as $name=>$http){
echo "\nGame:$name\n";
$this->log('Game',$name);
$price=$this->getPrice($http['sell']);
if($price!==false)
$this->areasSell[$name]=$price;
$price=$this->getPrice($http['buy']);
if($price!==false)
$this->areasBuy[$name]=$price;
}
}
function getPrice($http){
if(!$http)return false;
$thisGame=array();
$doc=$this->get($http);
$doc=$this->getMiddle($doc,'cart_t');
$table=$this->getTableData($doc);
//dump($table);exit;
$headers=$table[1];
$favorCount=count($headers);
$last='last area';
for($i=2;$i<count($table);$i+=2){
$tds=$table[$i];
$name=trim($tds[0]);
//echo "I=$i Name=$name Last=$last\n";
if(substr($name,0,strlen($last))==$last)continue;
$last=$name;
$stock=intval($tds[1]);
$price=intval($tds[3]);
$thisGame[$name]=array(
'areaName'=>$name,
'basePrice'=>$price,
'stock'=>$stock,
'favor'=>array()
);
for($j=0;$j<$favorCount;$j++){
$favorStock=intval($headers[$j]);
$favorPrice=$tds[$j +3];
$thisGame[$name]['favor'][$favorStock]=intval($favorPrice);
}
}
//dump($thisGame);exit;
return $thisGame;
}
function getBuyPrice($http){
$thisGame=array();
$doc=$this->get($http);
$doc=$this->getMiddle($doc,'botan');
$table=$this->getTableData($doc);
//dump($table);exit;
for($i=1;$i<count($table);$i++){
$tds=$table[$i];
$name=$tds[0];
$stock=intval($tds[1]);
$price=intval($tds[2]);
$thisGame[$name]=array(
'areaName'=>$name,
'basePrice'=>$price,
'stock'=>$stock,
);
}
//dump($thisGame);exit;
return $thisGame;
}
function getGames($GamePage){
$doc = $this->get($GamePage);
if($doc===false)return false;
$reg='/<td[^>]*><a\s*href="([^"]*)"\s*target="\_self"><img[^>]*alt="([^"]*)"><\/a><\/td>/i';
$matchs=$this->pregMatchAll($reg,$doc);
//dump($matchs);exit;
foreach($matchs as $match){
if($match==$matchs[0])continue;
$name=$match[2];
$mts=$this->pregMatch('/(?:rmt)?\s*(\S*)/i',$name);
//dump($name);dump($mts);exit;
$name=trim($mts[1]);
$name=$this->getMiddle($name,null,' ',true);
$http=$match[1];
$doc=$this->get2($http);
$regSell='/<A\s*href="([^"]*)"\s*target="\_self"><IMG\s*src="gallery\/order\_sell\.jpg"[^>]*>/i';
$regBuy='/<A\s*href="([^"]*)"\s*target="\_self"><IMG\s*src="gallery\/order\_buy\.jpg"[^>]*>/i';
$mtsSell=$this->pregMatch($regSell,$doc,true);
$mtsBuy=$this->pregMatch($regBuy,$doc,true);
if($mtsSell)
$httpSell=$mtsSell[1];
else
$httpSell=false;
if($mtsBuy)
$httpBuy=$mtsBuy[1];
else
$httpBuy=false;
//dump($http);dump($mtsSell);dump($mtsBuy);exit;
if(!$mts)continue;
$games[$name]=array(
'sell'=>$httpSell,
'buy'=>$httpBuy
);
}
//dump($games);exit;
return $games;
}
}
?>
相关热门文章
给主人留下些什么吧!~~
评论热议