Нумерация результатов поиска Google
Время от времени я проверяю позиции своих сайтов по тем или иным запросам в поисковой системе Google. Проблема в том, что Google не отображает в своей выдаче циферки с позициями результатов. В данной статье я хочу предложить вам очень простое и удобное решение проблемы нумерации результатов серпа в Google с применением букмарклета.
Но начну я с того, что подобная фишка уже реализована во многих браузерных расширениях: RDSbar, SERP Trends и т.д. Проблема в том, что иногда выдача меняется и приходится ждать их обновления. К тому же такие расширения нагружают браузер и зачастую делают больше чем требуется.
Букмаркле нумерации результатов поиска Google
В общем, мне было проще написать свою JavaScript надстройку в виде букмарклета. Его код выглядит следующим образом:
var num = 10,
start = 0;
/* количество результатов в выдаче из URL-адреса */
var s_num = location.search.match(new RegExp("[\\?|&]num=([^&]*)"));
if ( s_num !== null ) {
num = parseInt(s_num[1]);
} else {
/* количество результатов в выдаче из куки */
s_num = document.cookie.match(new RegExp('NR=([^:]*)'));
if ( s_num !== null ) num = parseInt(s_num[1]);
}
/* текущий номер страницы из элемента навигации на странице */
var cur = document.getElementsByClassName('cur')[0];
if ( typeof cur !== 'undefined' ) {
cur = parseInt( ( document.all ) ? cur.innerText : cur.textContent );
start = ( cur - 1 ) * num;
} else {
/* текущее начало отсчёта результатов выдачи из URL-адреса */
var s_start = location.search.match(new RegExp("(\\?|&)start=([^&]*)"));
if ( s_start !== null ) start = parseInt(s_start[1]);
}
/* обработка элементов выдачи по классу g
*/
[].forEach.call(document.getElementsByClassName('g'), function(e){
/* нумеруем только нумеруемое */
if ( -1 == e.parentElement.className.search(/_xse/) && -1 == e.className.search(/tpo|_Nn|no-sep|mnr-c/) ) {
/* добавление нумерации */
var span = document.createElement('span');
span.setAttribute('style', 'float:left;margin-left:-40px;line-height:21.6px');
span.innerHTML = (start + 1)+'.';
e.insertBefore(span, e.firstChild);
start++;
}
});
Установка и использование
- перетащите эту ссылку: GN – на панель вкладок закладок Вашего браузера;
- задайте запрос в Google;
- когда появится страница выдачи, кликните букмарклет.
Для большей наглядности я даже записал видео.
Скрипт добавит на страницу элементы нумерации результатов, и вы сможете узнать позицию сайта в выдаче.
Нумерация результатов в выдаче Google
К слову, у меня есть букмарклет и для нумерации результатов в Яндекс, пользуйтесь!
На этом у меня всё. Спасибо за внимание. Если есть вопросы, задавайте их в комментариях. Удачи!
Короткая ссылка: http://goo.gl/mqYdYU
Этот букмарклет рекомендуют:
SEO : script JS à bookmarker qui permet de faire apparaître le numéro du site dans les SERPs de Google http://t.co/v5wTtwwjFr (site en russe
— Alexandre Penyauski (@alex_penyauski) 23 апреля 2014
Есть такой замечательный плагин Neiron Search Tools, по моему он все делает нормально.
2Сергей Леонтьев есть замечательный плагин RDSbar, он тоже делал нормально, но структура выдачи изменилась и он ничего не делает, надо ждать обновления, а надстройку изменить может и обычный пользователь.
Хорошее решение! Главное что простое) Меня тоже смущает отсутствие номеров в выдаче Гугла - как-то это не по-русски, когда top не пронумерован (любой: будь то поисковая выдача или список участников спортивных состязаний)
2 Павлуха да, SEO в чём-то сродни спортивным состязаниям ;-)
Использую SERPTrends для Мозиллы. Показывает номера позиций и динамику их изменения с последнего посещения выдачи по запросу.
2Олег да, я тоже когда-то использовал и SERPTrends, но было дело изменился формат выдачи и он перестал работать... к слову, он завязан на URL-параметрах и иногда это создаёт баг.
Нумерует выдачу с карт, а они не должны нумероваться, чтобы отключить нумерацию карт нужно добавить проверку на class которых нету в выдаче карт например так
Изменить после [].forEach.call
if ( ( typeof e.id != 'undefined' ) && ( e.id == 'imagebox_bigimages') || (e.getElementsByClassName('rc').length == 0) ) { }
2Sanek508 приведите пример поискового запроса пожалуйста.
любой запрос когда выводятся результаты из карты, например изготовление печатей
вот ссылка на изображение http://i058.radikal.ru/1406/fc/8e1a504612a3.jpg
Если вставить код который я написал постом выше то карта учитываться не будет.
Также в гугле не работает span.style = 'float:left;margin-left:-40px;line-height:21.6px';
и номера получаются выше текста http://i017.radikal.ru/1406/b4/addeb1a4e4f3.jpg, вставил после
span.style = 'float:left;margin-left:-40px;line-height:21.6px';
span.style['float'] = 'left';
span.style['margin-left'] = '-40px';
span.style['line-height:21.6px'];
Теперь работает и в гугле и в опере span.style = 'float:left;margin-left:-40px;line-height:21.6px'; нужно оставить чтобы работало во всех браузерах.
в итоге http://s013.radikal.ru/i323/1406/0b/7e2b8504bf31.jpg
Вот весь код:
// ==UserScript==
// @name GoogleNum
// @include *google.ru/*
// @include *google.com.ua/*
// @include *google.com/*
// ==/UserScript==
var num = 10,
start = 0,
params = location.search.substr(1).split('&');
for ( var k in params ) {
var v = params[k].split('=');
params[v[0]] = parseInt(v[1]);
}
if (
( typeof params['num'] !== 'undefined' ) &&
( !isNaN(params['num']) )
) num = params['num'];
var cur = document.getElementsByClassName('cur')[0];
if ( typeof cur === 'undefined' ) {
if (
( typeof params['start'] !== 'undefined' ) &&
( !isNaN(params['start']) )
) start = params['start'];
} else {
cur = parseInt( ( document.all ) ? cur.innerText : cur.textContent );
start = ( cur - 1 ) * num;
}
[].forEach.call(document.getElementsByClassName('g'), function(e){
if ( ( typeof e.id != 'undefined' ) && ( e.id == 'imagebox_bigimages') || (e.getElementsByClassName('rc').length == 0) ) { }
else {
var span = document.createElement('span');
span.id = 'num'+(start + 1);
span.style = 'float:left;margin-left:-40px;line-height:21.6px';
span.style['float'] = 'left';
span.style['margin-left'] = '-40px';
span.style['line-height:21.6px'];
span.innerHTML = (start + 1)+'.';
e.insertBefore(span, e.firstChild);
start++;
}
});
Ошибся чуть чуть - span.style['line-height'] = '21.6px';
2Sanek508 да, адреса нужно было исключить, только блок картинок надо рассматривать как отдельное условие, т.е. нужны дополнительные круглые скобки. Париться с каждым style мне было лень, использовал setAttribute(), не очень кросбраузерно, но в Firefox и Chrome вроде работает. Параметры из URL стал брать через регулярное выражению + добавил обработку куки, там можно получить количество результатов на странице. По умолчанию num = 10, т.к. в этом случае параметра NR в куке нет. Спасибо за уточнения!
Помогите пожалуйста, я перенес ссылку в закладки, но когда кликаю на нее в ответах гугла ничего не происходит.
2Влад Хозяинов ага, спасибо за комментарий, минимайзер не те кавычки поставил, теперь всё работает.
Здравствуйте! Сейчас гугл стал учитывать блок картинок в выдаче, скрипт на страницах с картинками показывает 9 результатов, нужно включить в обработку блок картинок, я в джава вооще не шарю, пробовал копался но так и не решил проблему, если не сложно, можете изменить скрипт чтоб он нумеровал картинки? И еще другая проблема, в яндексе скрипт нумерует карты, а они исключены теперь у яшки и получается если есть карты то показывает 11 позиций, еще бы тут подправить, было бы очень хорошо)
2Анонимный Приведите пожалуйста примеры запросов по которым есть описанные проблемы, а то так сложно правильно скорректировать скрипт.
Здравствуйте! Например в гугл юа и гугл ру по запросам - "микроволновка" "шкаф купе" "смартфон" "стакан" "нокиа" и тд. выдает по 9 результатов, короче там где есть картинки везде по 9 результатов, с яшкой разобрался, карты не нумерует, а тут не смог добавить картинки в нумерацию))
Что-то у меня не нумеруется, я тоже пробовал вчера закомментировать строку ( (typeof e.id !== 'undefined') && (e.id == 'imagebox_bigimages') ) но все равно не нумерует картинки и сейчас Ваш скрип измененный попробовал, тоже не нумерует, а у Вас нумерует?
2Анонимный Пришлось добавить удаление элементов, которые не нужно нумеровать. В основном это адреса. В противном случае надо было бы городить огород. Но теперь вроде всё норм.
Да, картинки теперь нумерует но начало нумеровать блок "В новостях" теперь при запросах например "кроссовки" "москва" "серебро" выдает 12 результатов, вот "запара" блин, получается нет возможности нумеровать картинки а блок "в новостях" не нумеровать?
2Анонимный нет, это я просто работал над скриптом... сейчас всё норм.
2Анонимный Исключил из нумерации новости.
Теперь нумерует отлично, спасибо!
Доброго времени суток! Я вот тоже столкнулся с проблемой нумерации картинок в google и нашел ваш сайт, хотел спросить? можно ли сделать так чтобы чтобы не трогать выдачу, то есть не удалять адреса и новости но при этом нумеровать картинки?
2Виталий можно, но это будет нагромождение кода, чего я пытаюсь избежать в букмарклетах.
Ясно, я использую скрипты всегда через Greasemonkey и ваш тоже прекрасно работает через это дополнение, если вам не сложно, можете кинуть мне на емеил k_tolin@mail.ru код в котором адреса и новости будут на месте ненумерованные а картинки при этом будут нумероваться, но если это затруднит вас, тогда не нужно и прошу прощения за беспокойство!
2Анонимный и Виталий Используемая на данный момент концепция. Блоки с картинками и новостями нумеруются, но учитываются как один результат. Блоки адресов и граф знаний не нумеруются. Ничего не удаляется.
Спасибо, то что нужно!
Здравствуйте, закомментируйте в коде строку "нумеруем только нумеруемое" а то при копировании кода со страницы скрипт не работает (может кто-то не поймет в чем прикол)
Здравствуйте! Скрипт почему-то не работает, а когда я его раньше копировала, отлично работал. Помогите пожалуйста!
2Анонимный исправил, проблемы были с кавычками в ссылке, теперь всё вроде нормально, проверяйте.
Здравствуйте, то ли это только у меня то ли у всех, но скрипт не нумерует сейчас основную выдачу, только напротив картинок ставит цифру "1" и все, даже если они на 10 позиции и больше никакой нумерации нет на любых страницах, опять наверное гугл сменил названия классов или что это может быть?((
2Сергей да, Google снова сменил структуру выдачи, заменив LI теги на DIV в списке OL. Что тут можно сказать? Умом Google не понять, будем править.
Все снова работает как нужно, спасибо Вам большое за Вашу работу, Вы здорово выручаете многих людей!
Если скопировать скрипт со страницы то он не работает только букмарклет нумерует...
2Анонимный: спасибо, поправил.
Хорошо нумерует ваш скрипт, спасибо, а есть ли возможность убрать "определения в интернете" с нумерации? Вот например запросы - "шлагбаум, динамит, водопровод" по подобным запросам в выдаче появляются "определения в интернете" скрипт их нумерует и получается 11 результатов...
2Анонимный исключил определения из нумерации, пробуйте.
Да, отлично, теперь не нумерует определения, спасибо!
На второй странице и т.д. вместо нумерации стоит NAN, что делать дрУги? Опера 12. Сменить браузер не вариант.
2Анонимный Ага, есть такое дело в oldschool Opera, надо будет поработать.
Константин, если ещё не пропал интерес к этому букмарклету, вот скрин после его отработки https://drive.google.com/file/d/0B22BUlIBBm7rM25GQ2NScy1RSjg/view?usp=drivesdk
Google настроен на выдачу 10 результатов. Получается, не нумеруются позиции после первой ("спрятанные" интересным способом поисковиком) и картинки.
2Анонимный Х.з. почему так… в целом гугл не должен причислять картинки и т.п. к основной выдаче… а они хуй скажет что и как на самом деле, потому не стоит заморачиваться. В целом, следующая страница будет начинаться нумироваться с 11й позиции так что всё норм.
Здравствуйте. Добавил скрипт в расширение Tampermonkey как пользовательский скрипт и теперь автоматически нумеруется при загрузке страницы! Даже нажимать не надо. Спасибо за функцию.