zoukankan      html  css  js  c++  java
  • 抓取扑克之星免费赛玩家排行榜

    function getpokerstaropenplayers()
    {
    	//http://www.intellipoker.tw/leagues/Open-League/leaderboard?page=1
    	// 获取扑克之星开放玩家排名
    	$url = "http://www.intellipoker.tw/leagues/Open-League/leaderboard";
    	
    	
    	$html = file_get_html($url);
    	if($html == false)
    	{
    		echo "get false";
    		exit(0);
    	}
    	
    	$playerrow = $html->find('tr[class="odd"]');
    	$playerdata = array();
    	if(!file_exists("d://pokerfree/paiming1.txt"))
    	{
    		foreach($playerrow as $row)
    		{
    			$paiming = $row->children[1];
    			$palyername = $row->children[3]->find("a");
    			$score = $row->children[count($row->children) - 1]->find("a");
    		
    			//print_r($paiming->innertext);
    			//print_r($palyername[0]->innertext);
    			//print_r($score[0]->innertext);
    			$name = $palyername[0]->innertext;
    			$name = str_replace("&", "&",$name);
    			$name = str_replace("<", "<",$name);
    			$name = str_replace(">", ">",$name);
    			$name = str_replace("'", "'",$name);
    			$name = str_replace(""", """,$name);
    			file_put_contents("d://pokerfree/paiming1.txt","<note player="".$name."" label="5" update="1404984118">".$paiming->innertext.",".$score[0]->innertext."</note>
    ",FILE_APPEND);
    			//$playerdata[$paiming] = array($paiming,$palyername,$score);
    		}	
    	}
    	else
    	{
    		$data = file_get_contents("d://pokerfree/paiming1.txt");
    		
    		
    	}
    	
    	
    	for($i = 1;$i <= 500;$i++)
    	{
    		if(!file_exists("d://pokerfree/paiming{$i}.txt"))
    		{
    			$url = "http://www.intellipoker.tw/leagues/Open-League/leaderboard?page=".$i;
    			
    			
    			$html = file_get_html($url);
    			if($html == false)
    			{
    				continue;
    			}
    			
    			$playerrow = $html->find('tr[class="odd"]');
    			foreach($playerrow as $row)
    			{
    				if(count($row->children) < 6)
    					continue;
    				$paiming = $row->children[1];
    				$palyername = $row->children[3]->find("a");
    				$score = $row->children[count($row->children) - 1]->find("a");
    			
    				//print_r($paiming->innertext);
    				//print_r($palyername[0]->innertext);
    				//print_r($score[0]->innertext);
    				//echo "<note player="".$palyername[0]->innertext."" label="5" update="1404984118">".$paiming->innertext.",".$score[0]->innertext."</note>
    ";
    				$name = $palyername[0]->innertext;
    				$name = str_replace("&", "&",$name);
    				$name = str_replace("<", "<",$name);
    				$name = str_replace(">", ">",$name);
    				$name = str_replace("'", "'",$name);
    				$name = str_replace(""", """,$name);
    				file_put_contents("d://pokerfree/paiming{$i}.txt","<note player="".$name."" label="5" update="1404984118">".$paiming->innertext.",".$score[0]->innertext."</note>
    ",FILE_APPEND);
    			}
    		}
    		
    	}
    	
    	//<note player="harry_bt2013" label="5" update="1404984118">会玩NL2-7等大牌ALL IN</note>
    	
    	
    	
    }
    

      上面代码用到第三方HTML解析库simple_html_dom.php

      只是抓取了500页以内的玩家排名

      每一页的玩家排名数据都各自生成一个文件

      然后通过批命令 copy *.txt > paiming.txt 合并出扑克之星自定义的标注文件

      因为通过网页抓取,所以生成XML文件时候需要把一些字符转义 

      还有涉及到PHP 如何解析出HTML数据用法,值得记录下来。

      下面是玩家排名的一行的HTML代码。这样就可以知道PHP要查找到HTML代码.

    <tr class="odd">
                      <td></td>
                        <td>1</td>
                        <td class="marked">
                            
                            <img src="http://media.intellipoker.com/images_site/global/themes/pso/arrow-dash-000.gif" alt="排名持平">&nbsp;                    </td>
    
    
                        
                        <td>
                                                        <img class="b-flag b-flag_DO" src="http://media.intellipoker.com/images_site/global/flags/blank.gif" alt="DO" title="DO">
                                                    <a style="color: black;" href="#">Omegit@</a>
                        </td>
    
    
                      <td> <img src="/images_system/icons/global-chips20.png"></td>                        <td class="gap"></td>
                                                          <td class="marked">
                             $150                            </td>
    
    
                                                <td class="gap"></td>
                                                        <td class="marked checked20">
    
                             $1,500                            </td>
    
    
                                            <td class="checked" title="participated in:87"><img src="http://media.intellipoker.com/images_site/global/themes/pso/checked.png" alt=""></td>
                        <td>
                                                    <a style="color: black;" href="/leagues/Open-League/leaderboard?username=Omegit%40&amp;user_id=4296180">2612.10</a>
                        </td>
                    </tr>

    这些标注数据可以用来识别网上的那些玩家大概的实力,当然是比不上那种专业数据软件.请见谅

      

      

  • 相关阅读:
    模板--后缀自动机
    十二省NOI“省选”联考模测(第二场)A抽卡大赛
    BZOJ 1800: [Ahoi2009]fly 飞行棋
    BZOJ 1208: [HNOI2004]宠物收养所
    BZOJ 1876: [SDOI2009]SuperGCD
    BZOJ 1013: [JSOI2008]球形空间产生器sphere
    BZOJ 1011: [HNOI2008]遥远的行星
    BZOJ 1010: [HNOI2008]玩具装箱toy
    BZOJ 1008: [HNOI2008]越狱
    BZOJ 1007: [HNOI2008]水平可见直线
  • 原文地址:https://www.cnblogs.com/maikkk/p/3922292.html
Copyright © 2011-2022 走看看