Доброго времени суток читатели блога 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 — как вариант, также — Топвизор — в помощь.