Статьи

Отслеживайте свой рейтинг с помощью Google API

В 2002 году Google внедрил API для своей популярной поисковой системы, чтобы позволить веб-разработчикам выполнять поиск Google на своих собственных веб-сайтах. Используя SOAP (простой протокол доступа к объектам), API позволяет выполнять поиск и поиск результатов в фоновом режиме. Многим людям также нравится использовать API Google, чтобы настроить отображение результатов поиска на своих сайтах. Однако одно из малоизвестных преимуществ возможности доступа к API Google состоит в том, что вы можете использовать его, чтобы находить поисковый рейтинг вашего сайта в Google, не посещая веб-сайт Google.

Разработчики и владельцы сайтов часто заинтересованы в том, чтобы узнать, насколько хорошо их сайты ранжируются по определенным ключевым словам. Традиционный способ сделать это — ввести поисковый запрос на google.com (или в строку поиска Google в вашем браузере), а затем вручную просканировать появляющиеся страницы результатов в поисках вашего URL. Если ваш сайт не оптимизирован под ключевое слово, которое вы искали, ваш URL может быть ранжирован довольно низко (например, на 50-й странице!). В таких ситуациях поиск вашего URL был бы утомительным, если не сказать больше.

К счастью, доступны веб-сервисы, которые автоматизируют этот процесс, требующий много времени. Однако многие из этих служб накладывают ограничения на количество записей, которые вы можете запросить. Например, некоторые веб-службы перестанут искать ваш URL после 200-й записи.

В этой статье я расскажу о скрипте, который позволяет использовать API Google для определения рейтинга вашего сайта в Google. Сценарий имеет встроенную функцию, которая снова запрашивает сервер Google в случае ошибки и позволяет ограничить количество возвращаемых результатов. Я упаковал этот скрипт, чтобы вы могли скачать код, который мы будем использовать в этой статье .

Обратите внимание, что на момент написания статьи Google API еще находился в стадии бета-тестирования. В результате в будущем в API Google могут произойти некоторые изменения, хотя я не думаю, что они будут слишком радикальными.

Для тех, кто не заинтересован в изучении кода, не стесняйтесь проверить небольшую демонстрацию, которую я сделал, чтобы увидеть, о чем я (вы должны зарегистрироваться на http://www.google.com / apis ключ API Google, хотя).

Требования

Ключ Google

Перед запуском скрипта вам потребуется ключ разработчика от Google. Если у вас его нет, вам нужно зарегистрировать аккаунт Google на веб-странице API Google . Этот ключ позволяет делать до 1000 запросов в день; десять результатов будут возвращены каждый раз.

После того, как вы зарегистрировали аккаунт, загрузите комплект API. В нем вы найдете файл с именем GoogleSearch.wsdl Загрузите этот файл на свой сервер.

Грушевое мыло

Этот пакет является одной из нескольких попыток реализовать протокол SOAP (Simple Object Access Protocol) для отправки и получения сообщений XML в PHP.

Многие разработчики предпочитают NuSOAP (это более легкая версия PEAR SOAP) или расширение SOAP, встроенное в PHP 5. Я решил использовать PEAR SOAP, потому что он легче интегрируется в другие мои приложения PEAR. Если у вас нет опыта работы с SOAP или веб-сервисами, не беспокойтесь! Вам просто нужно убедиться, что на вашем хосте установлен пакет PEAR SOAP. Если этого не произойдет, вам нужно установить его вручную (или попросить об этом системного администратора) с http://pear.php.net/package/SOAP .

Версия PHP 4 или выше

Сценарий написан на PHP, поэтому ваш хост должен также поддерживать PHP.

Параметры

Нам нужно настроить следующие параметры, прежде чем мы начнем запрашивать сервер Google. Эти переменные могут быть установлены внутри самого скрипта или через форму. Чтобы оценить происходящее здесь, перейдите на сайт Google и нажмите ссылку «Расширенный поиск» рядом с окном поиска. Некоторые параметры, отображаемые в дополнительных настройках, аналогичны параметрам, используемым в Google API.

  • key это ключ разработчика вашего API Google. Вы подали заявку на учетную запись Google API, не так ли?
  • q это термин или фраза, которую вы используете для поиска.
  • maxResults это представляет количество результатов, которые будут возвращены за запрос. Обычно вы хотите, чтобы это значение было 10, что является максимумом.
  • start n-я запись, с которой начинается запрос. Например, если вы хотите отобразить результаты поиска с 20 по 29, задайте для переменной start значение 20, а для переменной maxResults — 10.
  • filter это логическая переменная, которая указывает, следует ли включать повторяющиеся результаты в список результатов. Это должно быть установлено в true или false. Например, если вы не хотите, чтобы дубликаты возвращались, установите для фильтра значение true. Ваши результаты будут отфильтрованы для дублирования контента.
  • restrict вы можете ограничить свои результаты определенными категориями, такими как правительство США, Linux, Macintosh и FreeBSD. Оставьте это поле пустым, если вы хотите выполнить поиск по всей сети.
  • safeSearch если вы хотите, чтобы контент для взрослых фильтровался из результатов поиска, установите для этого параметра значение true.
  • lr эту переменную можно использовать, чтобы ограничить результаты поиска конкретным языком. Если вы оставите поле пустым, по умолчанию будут отображаться сайты только на английском языке.
  • oe Это можно использовать для управления кодировкой результатов. Оставьте его пустым, если вы хотите использовать вывод по умолчанию UTF-8.
Грязная работа

Код использует цикл while для поиска по указанному вами URL, по десять результатов за раз. Если Google вернет ошибку, скрипт остановится на 15 секунд, а затем возобновит запрос. Если ошибка серьезная (например, превышение лимита в 1000 запросов), сценарий завершится. Цикл while позволяет сценарию продолжать работу до тех пор, пока он не найдет ваш URL-адрес или не достигнет максимального количества результатов поиска (как указано вами). Если вы не можете найти свой URL в первых 1000 записях, вероятно, ваш веб-сайт все еще находится в режиме ожидания в Песочнице Google или еще не был проиндексирован Google.

Код может показаться пугающим для начинающих, но логика проста. Имея небольшой опыт программирования, вы сможете легко проходить через него, читая комментарии.

while ($loop) {
// Instantiate the SOAP_WSDL Class.
$wsdl = new SOAP_WSDL('GoogleSearch.wsdl');
// Get the WSDL Proxy Class
$soapclient = $wsdl->getProxy();
// Start Google API query
$result = $soapclient->doGoogleSearch($key,$q,$start,$maxResults,
$filter,$restrict,$safeSearch,$lr,$ie,$oe);
// If error occurs
if (PEAR::isError($result)) {
$message = $result->message;
echo "An error occured: $message<p>";
// pause for 15 secs
sleep(15);
// if too many queries, quit loop
if (preg_match("/Daily limit/i", $message)) {
$loop = false;
}
// if invalid key, quit loop
else if (preg_match("/Invalid/i", $message)){
$loop = false;
}
// if normal timeout message, continue
else {
echo "Retrying in 15 secs. <br/>";
}
}
// if no errors, check for the occurrence of your URL in the results.
else {
$desc = "";
// Step up the starting record for the next loop
$start += $maxResults;
// the actual ranking
$position = $start- $maxResults;
// Search for url
urlSearch($position, $result);
}
}
// display the final output
echo $output;

Поиск вашего URL из возвращенных результатов Google

Из предыдущего кода класс результата передается в функцию urlSearch Сначала функция проверяет, находится ли начальная запись в пределах указанного вами предела поиска. После получения результатов поиска цикл foreach попытается сопоставить ваш URL с результатами. Если совпадение найдено, информация о вашем веб-сайте будет отображаться и цикл закончится. Если нет, то цикл while продолжится…

function urlSearch($position, &$result) {
global $loop;
global $output;
global $resultLimit;
global $maxResults;
global $desc;
global $q;
global $myUrl;
// Get total results from the search
$count =$result->estimatedTotalResultsCount;
// Get the resultElements class
$elements = $result->resultElements;
// if searched results reach limit set by you, quit loop
if ($position == $resultLimit) {
echo "You have restricted the search results to $resultLimit";
$loop = false;
}
else if ($count > 0) {
echo "$position records<br/>";
foreach ($elements as $item) {
$position++;
// if the URL is found, display it and quit loop
if (preg_match("/$myUrl/i", $item->URL)) {
$size = $item->cachedSize;
$title = $item->title;
$url = $item->URL;
$snippet = $item->snippet;
$desc .= "<p>$title [Cache Size: $size]<br/> <a href="$url" target="_blank">$url</a><br />";
$desc .= "$snippet</p>";
$output = "<br /> $count results found. Your URL is ranked #{$position} for the keyword "$q". It will appear on page ".ceil($position/ $maxResults)." in the Google Search Engine. Your listing will appear as follows: <p>$desc</p>";
// now exit the while loop
$loop = false;
}
}
}
// if Google returns no result, quit loop
else {
$output = "No results found for the keyword "$q"";
$loop = false;
}
}

Добавление формы

Нам нужна форма для отправки параметров в скрипт, чтобы запросить сервер Google API. Эта простая форма должна содержать несколько важных полей:

  • URL
  • Ключ Google
  • ключевое слово
  • максимальные результаты поиска

HTML-код формы отображается ниже:

<form id="form1" name="form1" method="post" action="">
<p>Your URL:
<input type="text" name="myUrl" />
eg. sitecritic.net <br/>

Ключ API Google:
<input type = ”text” name = ”key” />
например. EVwOpL34dfds2mD4354651ksCpk / YoYE <br/>
Ключевое слово:
<input type = ”text” name = ”q” />
например. Отзывы о сайте <br />

Максимальное количество результатов для поиска:
<input name = ”resultLimit” type = ”text” value = ”500 ″ size =” 4 ″ />
например. 500 </ p>

<Р>
<input type = ”submit” name = ”submit” value = ”Submit” />
</ Р>
</ Форма>

Вывод

Если ваш веб-сайт не имеет хорошего статуса и уже не имеет хорошего рейтинга в Google, отслеживание его в Google может быть утомительным процессом. Этот скрипт может упростить вашу жизнь, автоматизируя процесс, позволяя вам искать результаты до тех пор, пока не будет достигнут предел «1000 запросов в день». Поняв логику, вы также можете перенести сценарий на другие языки. Автоматическое задание (например, задание cron в Unix или запланированное задание Windows) также может быть настроено для запуска сценария в определенное время суток и отправки результатов по электронной почте после завершения поиска.

Не забывайте: полный исходный код доступен для скачивания .