Скрипт парсер поисковика

Discussion in 'PHP' started by LolFEm, 24 Jun 2007.

  1. LolFEm

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

    Joined:
    8 Sep 2006
    Messages:
    160
    Likes Received:
    52
    Reputations:
    5
    Собственно вот решил написать такой скрипт для сбора линков на определённые кеи, форуы, гесты.... в общем что нужно то и парсим....

    Code:
    <?php
    
    function gogo ($query)
    {	
       $fileLink="c:\\outFile.txt";
       $Fout=fopen($fileLink,"w+");
       $query=rawurlencode($query); 
       
       $end=0;
       $step=0;
       
    while(!$end)
     { 
    	$html=file_get_contents("http://gogo.ru/web?&q=$query&sf=$step`");
    	$tmp=explode("width=\"90%\"><a href=\"",$html);
        
    	for ($i=1; $i<count($tmp);$i++)
         {
    		$a=explode("\"",$tmp[$i]);
    		$out[]=$a[0];
    		fwrite($Fout,$a[0]."\n");
    	  }
    	if (!eregi("Далее&nbsp;",$html))
    	  {
    		return $out;
    	  }
    	  
         $step=$step+10;
    	 Print "Записано $step  записей <br>";
         @ob_flush(); 
    	 sleep(2);
      }
    }
    
    $SringQ="Killer Guestbook 0.1"; // Строка запроса
    $rezult=gogo($SringQ);
    
    ?>
    

    1) Есть такая вот проблема что когда пытаюся вывести в цикле сколько записано записей в файл то данные в браузер не попадают.... в чём может быть проблема... и как решить возможно...

    2) Мне например нужно создать базу гостевух... но в поиске много мусора... типа реклам,скачать и т.д.... для отсеивания такого... какой может быть наиболее разумный способ? для отброса большего мусора можно конечно открывать сам линк и парсить его на полное сходство с запросом... будут ли ещё идеи>?

    p.s: Спасибо за внимание
     
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    1)
    PHP:
    <?php
        set_time_limit
    (0);

        function 
    gogo($query)
        {
            
    $fileLink ="outfile.txt";
            
    $fout fopen($fileLink,"w+");
            
    $query rawurlencode($query);

            
    $end 0;
            
    $step 0;

            while(!
    $end)
            {
                
    $html file_get_contents("http://gogo.ru/web?&q=$query&sf=$step`");
                
    $tmp  explode("width=\"90%\"><a href=\"",$html);

                for (
    $i 1$i count($tmp); $i++)
                {
                    
    $a explode("\"",$tmp[$i]);
                    
    $out[] = $a[0];
                    
    fwrite($fout,$a[0]."\r\n");
                }
                if (!
    eregi("Далее&nbsp;",$html))
                {
                return 
    $out;
                }

                
    $step $step 10;
                echo 
    "Записано $step  записей <br>";
                @
    ob_flush();
                
    sleep(2);
            }

        }

        
    $sringq="Killer Guestbook 0.1";
        
    $rezult gogo($sringq);
    ?>
    Записывает в файл
    Code:
    http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml 
    http://www.woweb.ru/load/55-1-0-1410
    http://webforus.com.ru/w/scr/?id=127 
    http://www.internet-technologies.ru/scripts/script_802.html
    http://softobzor.ru/alfovite/script/K.html
    http://www.phpclub.ru/?m=app&s=35
    http://inattack.ru/program/215.html
    http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
    http://rasta0.fromru.com/
    http://www.webrelax.com/all/19-2-2006 
    http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml 
    http://www.woweb.ru/load/55-1-0-1410
    http://webforus.com.ru/w/scr/?id=127 
    http://www.internet-technologies.ru/scripts/script_802.html
    http://softobzor.ru/alfovite/script/K.html
    http://www.phpclub.ru/?m=app&s=35
    http://inattack.ru/program/215.html
    http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
    http://rasta0.fromru.com/
    http://www.webrelax.com/all/19-2-2006 
    http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml 
    http://www.woweb.ru/load/55-1-0-1410
    http://webforus.com.ru/w/scr/?id=127 
    http://www.internet-technologies.ru/scripts/script_802.html
    http://softobzor.ru/alfovite/script/K.html
    http://www.phpclub.ru/?m=app&s=35
    http://inattack.ru/program/215.html
    http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
    http://rasta0.fromru.com/
    http://www.webrelax.com/all/19-2-2006 
    http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml 
    http://www.woweb.ru/load/55-1-0-1410
    http://webforus.com.ru/w/scr/?id=127 
    http://www.internet-technologies.ru/scripts/script_802.html
    http://softobzor.ru/alfovite/script/K.html
    http://www.phpclub.ru/?m=app&s=35
    http://inattack.ru/program/215.html
    http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
    http://rasta0.fromru.com/
    http://www.webrelax.com/all/19-2-2006 
    Вывел:
    2) Парсить ссылки
     
  3. hhover

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

    Joined:
    21 May 2007
    Messages:
    60
    Likes Received:
    36
    Reputations:
    11
    Есть более адекватный код с использованием регэкспов, данные о выдаваемых сайтах записываются в массив, как вывести в браузер отчеты и записать инфу в файл - додумаешься сам, я думаю.
    PHP:
    <?php
    set_time_limit
    (0);
    echo 
    "<pre>";

    function 
    curl_getsource $url )
    {
      
    $curl curl_init();
      
    curl_setopt $curlCURLOPT_URL$url );
      
    curl_setopt $curlCURLOPT_RETURNTRANSFER);
      
    $source curl_exec $curl );
      
    curl_close $curl );
      return 
    $source;
    }

    function 
    query $keyword$start=)
    {
      global 
    $max_page;
      
      if ( 
    $start >= $max_page )
        die ( 
    "All over" );

      
    $keyword trim $keyword );
      
    $keyword str_replace " ""+"$keyword );

      
    $url "http://www.google.com/search?hl=en&q=" $keyword "&start=" $start;
      
    $source curl_getsource $url );

      
    preg_match_all "/\<h2\sclass\=r\>\<a\shref\=\"([^\"]+?)\"[^\>]+?\>(.+?)\<\/a\>.+?class\=\"j\"\>\<font\ssize\=\-1\>(.+?)\<br\>/is"$source$resultPREG_SET_ORDER );

      foreach ( 
    $result as $info )
      {
        
    $link $info[1];
        
    $title $info[2];
        
    $desc $info[3];
        
    $links[] = array ( 'link' => $link'title' => $title'desc' => $desc );
      }
      
    print_r($links);
      
      
    $start += 10;
      
    query $keyword$start );

    }

    $max_page 30;
    query 'keyword' );
    ?>
    А прошлый код, кстати, продублировал 4 раза линки с первой страницы. Заметно даже в посте Isis.
     
    1 person likes this.
  4. LolFEm

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

    Joined:
    8 Sep 2006
    Messages:
    160
    Likes Received:
    52
    Reputations:
    5
    Спасибо за помощь будем разбираться!