Оболочка+парсер гугла

Опубликовано 3 мая, 2009 в PHP

От нечего делать, в промежутки между заказами, написал безделушку – парсер выдачи гугла, может поможет кому в нелегком деле написания парсеров выдачи.

<html>
<head>
<title>Поиск <?php echo htmlspecialchars($_POST['query']); ?></title>
<style type="text/css">
input {
	width: 100%;
	font: 25px;
	border: 1px solid #1E1E1E;
}
select {
	width: 100%;
	font: 25px;
	border: 1px solid #1E1E1E;
}
iframe {
	width: 100%;
	height: 100%;
}
</style>
</head>
<body style="font: 12px tahoma; background-color: #F4F4F4;">
<form action="" method="post">
<input type="text" name="query" value="<?php echo htmlspecialchars($_POST['query']); ?>" onclick="this.value=''" />
<input type="submit" name="submit" value="Искать" />
</form>
<?php
if(isset($_POST['query'])) {
	echo '<select onchange="document.getElementById(\'result\').src=this.value;">';
	function browser($url){
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.63 (Windows NT 5.1; U; ru) Presto/2.1.1");
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$html = curl_exec($ch);
		curl_close($ch);
		return iconv('utf-8', 'windows-1251', $html);
	}
	$start = browser('http://www.google.ru/search?client=opera&rls=ru&q='.urlencode($_POST['query']));
	$start .= browser('http://www.google.ru/search?client=opera&start=10&rls=ru&q='.urlencode($_POST['query']));
	preg_match_all('/<h3\sclass=\w+><a\shref=\"(.*)\".*>(.*)<\/a><\/h3>/Usi', $start, $google);
	$i = 0;
	if(count($google[1][1]) != 0) {
		foreach($google[1] as $key => $link) {
			if($i == 0) { $first = $google[1][0]; $i++; }
			echo '<option value="'.$link.'">'.strip_tags($google[2][$key]).'</option>';
		}
	}
	else
	 echo '<option value="#">Ничего не найдено</option>';
	echo "</select><iframe id=\"result\" src=\"$first\"></iframe>";
}
?>
</body>
</html>

Как это всё работает можно посмотреть вот тут.




Комментарии «Оболочка+парсер гугла»:
Комментариев: 4. Обязательно оставьте свой!
Олег 07.05.2009 в 15:13

Привет. Подскажи, как переделать паттерн на http://www.google.com/sponsoredlinks чтобы парсил только сайты, которые выдает adwords.
Голову уже несколько часов ломаю, не получается :( (

pistol 07.05.2009 в 15:24

Сами домены нужны?

$serp = 'Выдача';
preg_match_all('/(.*)< \/cite>/Usi', $serp, $sites);
print_r($sites[1]);
Олег 07.05.2009 в 15:39

не парсится у меня ни к какую, пустая выдача…

Олег 07.05.2009 в 15:50

разобрался, большое спасибо.

Ваш комментарий: