Чем пропарсить выдачу Google?

Discussion in 'SЕО - тонкости, методы раскрутки' started by /Montana, 14 Feb 2009.

  1. /Montana

    /Montana Elder - Старейшина

    Joined:
    26 Oct 2007
    Messages:
    133
    Likes Received:
    18
    Reputations:
    -1
    Чем пропарсить выдачу Google? Нужно выдрать URL'ы, по определённым запросам, немного штук 200-300. Есть ли готовые решения, желательно скрипт.
     
  2. CrazyStudentS_Mi}{

    CrazyStudentS_Mi}{ Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    424
    Likes Received:
    296
    Reputations:
    92
    hrefer



    если скрипт то вот

    http://www.google.com/ie?q=&num=100&hl=ru&start=0&sa=N&filter=0 это поиск


    это потом тыкаем ссылки извлечь

    java script:all=document.links.length;mass='<b>Всего ссылок на странице:\u0020'+all+'</b><br><br>\n';for(i=0;i<all;i++){mass+=document.links+'<br>\n';}newwind=window.open('about:blank','result','width=600,top=100,left=100,scrollbars=1');newwind.document.write(mass);
     
    #2 CrazyStudentS_Mi}{, 14 Feb 2009
    Last edited: 14 Feb 2009
  3. devton

    devton Elder - Старейшина

    Joined:
    26 Oct 2007
    Messages:
    3,380
    Likes Received:
    5,179
    Reputations:
    48
    http://webdos.freezoka.com/files/htmllerz.zip
     
  4. Chode

    Chode Elder - Старейшина

    Joined:
    20 Jul 2008
    Messages:
    164
    Likes Received:
    19
    Reputations:
    0
    AGGRESS Parser
     
  5. Doktor_radosti

    Doktor_radosti Elder - Старейшина

    Joined:
    27 Nov 2007
    Messages:
    74
    Likes Received:
    26
    Reputations:
    1
    Рабочий allsubmitter, зануленная Аура (там правда больше 1000 за один подход не спарсишь).
     
  6. devscripts

    devscripts Elder - Старейшина

    Joined:
    8 May 2007
    Messages:
    131
    Likes Received:
    182
    Reputations:
    134
    Пожалуйста, пример парсера для пхпбб (смотрите код, чтобы оптимизировать под иной движок)
    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!=$page=100*$page '';
            
    $result='';
            
    $site='www.google.com';
            
    path='/ie?hl=en&num=100&start='.$page.'&lr=&q='.urlencode(trim($query));
            
    $fp = @fsockopen($site80$errno$errstr30);    
                
    $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) > 
                {
                        
    $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($fp1024);
            }
        
    $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 ($fpLOCK_EX);
                
    fputs($fp,"\n".$different[$i]);
                
    flock ($fpLOCK_UN);
                
    fclose($fp);    
                }
            }
        
    sleep(rand(13,19));
        if(
    count($result)<100) break;
        }

    ?>