Доброго времени суток читатели блога wooden-stool.ru
Недавно потребовалось узнать, на какой позиции находиться мой блог в поисковой выдаче по определённым запросам. Собственно нашёл кучу сервисов, но они меня неустраивали. Не устраивали они своей скоростью, определение позиций слишком медленное, а если мой сайт находиться например на 100+ позиции то, тут приходилось ждать до нескольких минут. Вообщем, стал я думать как это дело можно исправить — решил написать сам подобный скрипт определения позиций сайта по запросамя в поисковой выдаче. Недолго думая накотал небольшой php скрипт для определения позиций сайта в поисковой выдаче. И собственно вот что у меня получилось
- Определяет позицию сайта по нескольким запросам в поисковой выдаче google (Россия)
- Быстрая скорость работы
Файл getpos.php
Домен<br> <input id='domen' type='text' value="wooden-stool.ru"><br> Поисковые запросы:<br> <textarea id='keywords' cols='50' rows='10'>скрипт определения позиций сайта на PHP</textarea><br> <input type='submit' value='Поиск' onclick='send_data()'> <script>function send_data() { var keywords = new Array(); keywords = $('#keywords').val().split('\n'); // заполняем данными из textarea var keywords = document.getElementById("keywords").value; var domen1 = document.getElementById("domen").value; //получаем доменное имя document.getElementById('seo_id').innerHTML = "<img src='ajax-loader.gif'>"; // Передаём массив данных "keywords" и доменное имя$ .get('getdata.php', { 'keywords[]': keywords, domen: domen1 }, function(text) { document.getElementById('seo_id').innerHTML = text; // Результат пихаем в div });}</script>
Файл getdata.php
<tr><td>Позиция</td><td>URL</td><td>Анкор</td></tr> <?PHP header("Content-type: text/plain; charset=utf-8"); if ($_GET['keywords'][0] == "") {die("Укажие поисковой запрос / запросы и ваш домен"); } for($t = 0; $t <= count($_GET['keywords']); $t++ ) { $s = 0; $key = urlencode($_GET['keywords'][$t]); $page = 2; // сколько чекать страниц $page = $page-1; //Вычитаем 1 для корректировки ) $gt = 1; // Число ссылки в цикле for [не менять] $rg = 0; //Число ссылки в цикле foreach [не менять] (онли для анкора) // чекаем 10 ссылок на странице for($i = 0; $i <= $page*10; $i+=10 ) // $page*10 - получаем общее кол-во ссылок которые необходимо прочекать { if ($s == 1) { break; } //получаем текущую страницу, $i - число страниц $google = file_get_contents("http://www.google.ru/search?hl=ru&q=$key&start=$i"); //выдергиваем все ссылки в выдаче preg_match_all('#<h3 class="r"><a href="(.*?)".*?</a></h3>#', $google, $links); //Получаем анкоры ссылок, на выходе в массиве $res находиться 10 анкоров preg_match_all('#target=\"_blank\">(.*)</h3><div class=#Ui', $google, $res); foreach($links[1] as $link) // пробегам по всем нашим ссылкам и ищем в них вхождение нашего домена { if (strpos($link, $_GET['domen']) > -1) // Проверка, ищем вхождение нашего домена в ссылке { // Если нашли то, это наш сайт, соответственно выводим данные- текущую ссылку, её анкор и позицию preg_match_all('#q=(.*?)&am#', $link, $linksz); //Выдергиваем урлы // 1 колонка - позиция, 2я колонка - собсна сам урл, 3я колонка сейчас неработает, можете поправить регулярку (см.выше) echo "<tr><td width='100'>".$gt."</td><td width='325'><a href='".$linksz[1][0]."' target='_blank'>".substr($linksz[1][0], 0, 50)." ...</td><td width='450'> ".substr(strip_tags($res[1][$rg]), 0, 60)."</td></tr>"; break; } $gt++; // Прибовляем +1 к текущей ссылке, gt отвечает за текущую позицию в цикле $rg++; // rg это текущая ссылка на странице (онли для анкора) if (strpos($link, $_GET['domen']) > -1) break; } $rg = 0; //Обнуляем число текущий ссылки в цикле foreach и начинаем парсить следующую страницу (онли для анкора) unset($links); }}?>
Не запускается. Нажимаю поиск и ничего не происходит. Подскажите что не так.
-
gloys Говорит:
12.07.2012 at 10:23 дп
Ошибки выдаёт или что? Попробуйте подправить, после переноса скрипта сюда некоторые строки нужно перенести и т.п, просмотрите всё. В целом должен работать только что проверил.
-
gloys Говорит:
12.07.2012 at 10:24 дп
А ну и, библу JQuery подключить незабудьте ..
-
SergO Говорит:
22.08.2012 at 2:00 пп
Кроме подключения jQuery в getpos.php нужно добавить див с id=»seo_id». И тогда заработает. Несколько запросов, правда, не берёт, надо ещё покопаться. Спасибо за скрипт.
где можно скачать этот скрипт?
Проще мониторить позиции в онлайн-сервисе. SERP parser — как вариант, также — Топвизор — в помощь.