Google Серп

Статус
В этой теме нельзя размещать новые ответы.

bolyk

Мой дом здесь!
Регистрация
21 Авг 2006
Сообщения
315
Реакции
228
Уважаемы помогите, пожалуйста решить проблему с бяном:
нужно получить первую ссылку(линк без анкора) из выдачи гугла.
PHP:
$linkfirst = file("C://goo/link.txt");
$key = file("C://goo/keywords.txt");

for($i=0;$i<=count($key);$i++){
		// navigate to google
		$content = file_get_contents("http://www.google.com/search?q=".urlencode($key[$i]." site:".$linkfirst[0])."&ie=utf-8");
		flush();
		sleep(1);
		echo $content;
		preg_match_all('<cite>(.*)<\/cite>!siU',$content,$snippet);	
		echo $snippet[0][$i]."</br>";		
		// wait on browser		
		file_put_contents("C://goo/rez.txt",$key[$i]."|".strip_tags($snippet[0][$i])."\r\n", FILE_APPEND);
		}

мое калека не работает совсем. Уважаемые, помогите пожалуйста.
 
Видимо у ТС ошибка в регулярке
Так вроде парсит ссылки гугла:
PHP:
'#<cite>(.*?)<\/cite>#'
'#<cite>([^<]+)<\/cite>#'
или так полная ссылка
#<a href="([^"]+)" class=l>#
Ну и если только одну ссылку надо то можно preg_match юзать в место preg_match_all
 
Гугл желательно парсить курлом, ибо без юзер-агента будет отдавать страницу с капчей. На денвере работает и file_get_contents, а на хостинге вредничает.
 
Я всегда курлом пользуюсь. А еще у меня есть мечта, но не хватает времени разобраться полностью с сокетами - свобода плавания. Что захотел - то и отправил, в нужном виде, на любой порт и тд, вообщем гибкость
 
Уважаемы помогите, пожалуйста решить проблему с бяном:
нужно получить первую ссылку(линк без анкора) из выдачи гугла.
....
мое калека не работает совсем. Уважаемые, помогите пожалуйста.
как-то так...
PHP:
$linkfirst = file("link.txt"); 
$keys = file("keywords.txt"); 

foreach($keys as $key) {
	$link = trim($linkfirst[0]);
	$key = trim($key);
	if($key == '') break;
	$content = GetFirstLink($key,$link);
	flush();
	echo $key.'|'.$content.'<br />';
	file_put_contents("rez.txt", trim($key)."|".$content."\r\n", FILE_APPEND);
	sleep(1);
}

function GetFirstLink($q1,$q2) {
	$url="http://www.google.com/search?q=".urlencode($q1." site:".$q2)."&ie=utf-8";
	$content=GetPage($url); 
	preg_match_all("#<a href=\"([^\"]+)\" class=l>#", $content, $result_preg); 
	return $result_preg[1][0];
} 

function GetPage($url){
	$url=str_replace("http://", "", $url); 
	$host=substr($url,0,strpos($url,"/")); 
	$path=substr($url,strpos($url,"/")); 
	$skt = @fsockopen($host, 80); 
	if (!$skt) return false; 
	$requestHeader = "GET ".$path."  HTTP/1.1\r\n"; 
	$requestHeader.= "Host: ".$host."\r\n"; 
	$requestHeader.= "Connection: close\r\n\r\n"; 
	fwrite($skt, $requestHeader); 
	$responseHeader = ""; 
	$responseContent = ""; 
	do { 
		$responseHeader.= fread($skt, 1); 
	} 
	while (!preg_match("/\\r\\n\\r\\n$/", $responseHeader)); 
	if (!strstr($responseHeader, "Transfer-Encoding: chunked")) { 
		while (!feof($skt)) { 
			$responseContent.= fgets($skt, 128); 
		} 
	} else { 
		while ($chunk_length = hexdec(fgets($skt))) { 
			$responseContentChunk = ""; 
			$read_length = 0; 
			while ($read_length < $chunk_length) { 
				$responseContentChunk .= fread($skt, $chunk_length - $read_length); 
				$read_length = strlen($responseContentChunk); 
			} 
			$responseContent.= $responseContentChunk; 
			fgets($skt); 
		} 
	} 
	return chop($responseContent);
}

ну а дальше, по такому же принципу, цикл по массиву $linkfirst не сложно сделать. если надо конечно...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху