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

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

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

    glaz Постоялец

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

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

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

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

    AntonR

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

    glaz Постоялец

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

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

    a11i3n Создатель

    Регистр.:
    10 июл 2007
    Сообщения:
    49
    Симпатии:
    14
    Может быть поможет. Когда-то давно баловался с этим.
    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 нравится это.
Статус темы:
Закрыта.