Поиск на основе базы Google

Тема в разделе "Зарубежные поисковики", создана пользователем glaz, 18 дек 2008.

Статус темы:
Закрыта.
  1. glaz

    glaz Постоялец

    Регистр.:
    11 дек 2008
    Сообщения:
    74
    Симпатии:
    7
    Возможно ли как то производить поиск на основе базы гугла с дополнительным своими параметрами.

    1. Из всего найденого по запросу, выводить только те запросы с главной странице. (т.е. если нашлость что то по теме, но ведет на страницу www.сайт.ru/блаблабла/блабла/, фильтр режит такой результат.

    2. Не выводить сайты из списка (т.е. перед началом поиска, мы задаем список сайтов, который не нужно показывать в выдаче)

    Можно ли такое реализовать как-нибудь?
     
  2. AntonR

    AntonR

    Регистр.:
    29 ноя 2007
    Сообщения:
    176
    Симпатии:
    75
    Есть Google Custom Search Engine - www.google.com/cse.
    или самому надо писать, но тут если будет много запросов с одного IP, то Гугл будет переодически банить такой IP!
     
    glaz нравится это.
  3. glaz

    glaz Постоялец

    Регистр.:
    11 дек 2008
    Сообщения:
    74
    Симпатии:
    7
    Сначало думал то, но не совсем то. Там можно указать список сайтов по которым производить поиск, полезно, но нужно совершенно обратное, т.е. сайты которые в списке, он должен исключать.

    А если самому писать, то как? Есть какие-нибудь примеры?
     
  4. a11i3n

    a11i3n Создатель

    Регистр.:
    10 июл 2007
    Сообщения:
    42
    Симпатии:
    12
    Может быть поможет. Когда-то давно баловался с этим.
    http://phpclasses.dmwtechnologies.com/browse/package/3816.html
     
    glaz нравится это.
  5. murich

    murich Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    143
    Симпатии:
    19
    Пока написал только получение результатов и удаление тех, которые не ведут на главную страницу.
    Код:
    function parsegoogle($source){ // Возвращает массив с данными отпарсеной страницы
    	
    	preg_match_all('!class=r><a href="(.*?)"!si', $source, $links); // получаем массив ссылок на сайты
    	$links = $links[1];
    	
    	preg_match_all('!class=l>(.*?)</a>!si', $source, $titles); // получаем массив заголовков
    	$titles = $titles[1];
    	
    	preg_match_all('!</h3>(.*?)<br>!si', $source, $descr); // получаем массив описаний
    	$descr = preg_replace('<(.*)">', '', $descr[1]);
    	
    	if (count($links) != count($titles)){
    		echo ' <h2> произошла неведомая ***ня... Уходим. </h2>';
    		exit;
    	}
    	foreach ($links as $k => $v){
    		$result[$k]['link'] = $v;
    		$result[$k]['title'] = $titles[$k];
    		$result[$k]['descr'] = $descr[$k];
    		
    	}
    	return $result;
    	
    }
    function onlymorda($parsegoogleresult){
    	$la = 0;
    	foreach($parsegoogleresult as $k => $v){
    		$p = parse_url($v['link']);
    		if ($p['path'] == '' or $p['path'] == '/') {
    			//echo $parsegoogleresult[$k]['link'];
    			$onlymordas[$la]['link'] = $parsegoogleresult[$k]['link'];
    			$onlymordas[$la]['title'] = $parsegoogleresult[$k]['title'];
    			$onlymordas[$la]['descr'] = $parsegoogleresult[$k]['descr'];
    			$la++;
    			
    		}
    		
    	}
    	return $onlymordas;
    }
    $q = 'Нуллед';
    $s = 'http://www.google.com.ua/search?hl=ru&q='.$q;
    $g = file_get_contents($s);
    $parsegoogleresult = parsegoogle($g);
    //print_r($parsegoogleresult);
    print_r(onlymorda($parsegoogleresult));
    Нажимай спасибо- надеюсь, помог...
    PS А гугл кравлер, что с phpclasses, не работает чтото у меня
     
    glaz нравится это.
Статус темы:
Закрыта.