Показать сообщение отдельно

  #6  
Старый 20.02.2009, 15:29
M4g
Участник форума
Регистрация: 08.05.2007
Сообщений: 164
С нами: 10005506

Репутация: 784
По умолчанию

Пожалуйста, пример парсера для пхпбб (смотрите код, чтобы оптимизировать под иной движок)
PHP код:
<?php

/*Google parser v.0.1 by M4g, icq 884888*/

$log_file = 'log.dat';
$zapros = 'powered by phpbb';

set_time_limit (0);
//ignore_user_abort(true);

function setcookies($headers)
    {
        
$headers=explode("\r\n",$headers);
        for(
$x=0; $x<count($headers); $x++)
        {
        if(
preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $headers[$x],$match))
        return    array(
$match[1] => urldecode($match[2]));
        }
    }

    
function 
parse_serp($engine, $query,$page=0)
    {
    global 
$cookies;
    switch (
strtolower($engine))
        {
        case 
'google':
        
$page!=0 ? $page=100*$page : '';
        
$result='';
        
$site='www.google.com';
        
path='/ie?hl=en&num=100&start='.$page.'&lr=&q='.urlencode(trim($query));
        
$fp = @fsockopen($site, 80, $errno, $errstr, 30);    
            
$out = "GET $path HTTP/1.1\r\n";
            
$out .= "Host: $site\r\n";
           
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
              
$out .= "Connection: Close\r\n";
            
$out .= "User-Agent: Opera/9.60 (Windows NT 5.1; U; ru) Presto/2.1.1\r\n";

        if ( 
count($cookies) > 0 ) 
            {
                    
$cookie_str = 'Cookie: ';
                    foreach ( 
$cookies as $cookieKey => $cookieVal ) {
                    
$cookie_str .= $cookieKey."=".urlencode($cookieVal)."; ";
            }
        
$out .= substr($cookie_str,0,-2)."\r\n";
        }
            
$out .= "Referer: http://www.google.com/ie\r\n\r\n";

     @
fwrite($fp, $out);
     while (!@
feof($fp)) 
        {
        
$result .= @fread($fp, 1024);
        }
    
$cookies=setcookies($result);
    
flush();
    print 
$query."<br/>\n";

    
$pattern = '/<a title="(.+)" href=(.+)>(.+)<\/a>/isU';
    if(
preg_match_all($pattern, $result, $matches))
        {
                for (
$i=0; $i<count($matches[0]); $i++)
                        {
                        
$link = $matches[2][$i];
                    
$link=trim($link);
                            
$serp[] = $link;
                            }
                        }
        break;
                
                
        }
        return 
$serp;
    }



for(
$page=0;$page<11;$page++)
    {
    
$result = parse_serp('google',$zapros,$page);
    
$different=array();
    for(
$i=0;$i<count($result);$i++)
        {
        
preg_match("/(.+)\/(viewtopic|login|\s)(.+)/i",$result[$i],$arra[$i]);
        
$different[]=$arra[$i][1];
        }
    
$different=array_unique($different);
    for(
$i=0;$i<count($different);$i++)
        {
        if(!empty(
$different[$i]))
            {
            
$fp = fopen($log_file,"a");
            
flock ($fp, LOCK_EX);
            
fputs($fp,"\n".$different[$i]);
            
flock ($fp, LOCK_UN);
            
fclose($fp);    
            }
        }
    
sleep(rand(13,19));
    if(
count($result)<100) break;
    }

?>
 
Ответить с цитированием