Ранее я уже рассказывал о том, как можно создать собственный SERPSearch engine results page (Результаты выдачи поисковой системы). Теперь настала очередь сделать по-настоящему классный проект, который бы не только выполнял необходимые задачи, но и выглядел соответствующим образом.

Сегодня мы будем делать, а точнее наблюдать последовательно за:

  • Скриптом в программе ZennoPoster, выдающим результаты поисковой выдачи по заданным нами ключевым словам. При этом, сами словосочетания будут класться и браться из полноценной базы данных формата SQL, что облегчит сбор информации и увеличит скорость парсинга. Кроме того, мы будем пользоваться современными инструментариями для действительно качественного продукта, который можно смело показывать остальным.
  • Редактированием исходников в HTML, JS, XML и других форматах для определения нужных данных. Например, нам потребуется ввод списков в определенном виде, изменение названий и т.п.
SERP скрипт для Яндекса

Шаг первый - SERP скрипт для Яндекса

Для начала работы нам нужен софт ZennoPoster (о его преимуществах писал ранее не в 1 статье). Действие №1 - подключаем базу данных, где прописываем ключевые слова и другие данные.

keys keys

Во второй таблице будем собирать, собственно, сами позиции. Почему всю информацию не внедрели в 1 базу данных? Все просто - проекты лучше заводить отдельно, т.к. будут в дальнейшем меняться и добавляться "ключевики" + это попросту намного удобнее чем пользоваться единой базой.

Если насчет 1 таблицы все предельно ясно - это ячейки "id", "project", "keys". То насчет второй ненамного сложнее - это "id", "engine", "key", "position", "link", "date". Перевод излишен, считаю.

[maxbutton id="3" text="ZennoPoster" url="/af-zenno" linktitle="External link | Внешняя ссылка" window="new" nofollow="true"]

keys

Для быстрого сбора позиций в Яндексе нам потребуется инструмент под названием xml.yandex.ru. К его плюсам можно отнести не только скорость взятия информации, но и удобство в целом: например, за один запрос можно вывести данные 100 сайтов по заданному ключевому слову. Помимо прочего, у вас исключены ошибки, которые присущи обычному поиску с его капчами, кешем и другими нюансами.

Примечание: вкратце - Яндекс предлагает за так называемые лимиты - тире запросы к их серверу = выдачу поисковой системы по нужным вам словосочетаниям. Чем мощнее ваш ресурс, тем этих лимитов больше. Ну, а если ресурс нулевой, и вы только начинаете продвижение в сети, то этих лимитов вам не видать как своих ушей :) Но, правда, их можно купить извне!

Вы можете отдельно сохранить выдачу поиска в таблице, но в базе данных мы сохраняем только свой домен и информацию исключительно для него!

Во входных настройках ЗенноПостера указываем домен парсинга, регион. Можете самостоятельно внести те элементы, изменение которых происходит у вас часто...

input_settings

Последовательность действий

Итак, подготовительные реакции были произведены, настало время изучить последовательность действий. Первым делом подключаемся к SQL базе, выдираем оттуда "ключи". Сделать это можно, обратившись к таблице:

SELECT `keys` FROM `ВАША_БАЗА_ДАННЫХ` WHERE `project`='{-Variable.domain-}';

Разбираем код: "keys" - столбец с "ключами", project - домен или переменная, которую мы используем во входных настройках.

Словосочетания кладем в список и далее по одному выдергиваем для последующих изменений.

string text = project.ExecuteMacro(project.Variables["key"].Value); // Обработка текста "В список" Macros.TextProcessing.ToList(text, "rn", "Text", project, project.Lists["keywords"]);

Разбираем код: данные переменной "key" конвертируем в список путем разделения их с помощью "rn".

var list = project.Lists["keywords"]; string data = string.Empty; lock(SyncObjects.ListSyncer) { for(int i=list.Count-1; i>=0 ; i--) { data = list[i]; if (String.IsNullOrWhiteSpace(data.Trim())) list.RemoveAt(i); } }

Разбираем код: просто удаляем пустые строки в списке, т.к. они могут возникнуть, если вы вносите ключевые слова вручную.

day_only

Дату можно использовать в данном варианте, т.е. только число и месяц (без года) - это намного читабельнее при больших объемах данных.

switch (project.Variables["region"].Value) { case "Россия": project.Variables["region"].Value = "225"; break; case "Москва": project.Variables["region"].Value = "213"; break; case "Санкт-Петербург": project.Variables["region"].Value = "2"; break;}

Выбираем нужный регион парсинга выдачи поисковой системы. Далее кладем значение API для запроса к серверу, или точнее сам запрос. Выглядит он следующим образом:

{-Variable.api_yandex-}&query={-Variable.key-}&lr={-Variable.region-}&l10n=ru&sortby=rlv&filter=strict&groupby=attr%3D%22%22.mode%3Dflat.groups-on-page%3D100.docs-in-group%3D1&page=0

Разбираем код: апи поисковика + "ключ" + регион + язык выдачи + сортировка + фильтрация + количество элементов на странице и номер этой страницы. Подробную информацию по использованию параметров в запросе смотрите на странице у Яндекса (XML).

парсинг

На выбор предоставляется формат XML, что как по мне не самый удобный, лучше бы JSON, хотя может он и есть в списке, но я не нашел. В любом случае, парсинг осуществляется через кубик ZennoPoster или ручками...

парсинг

Как использовать данный функционал, смотрите на форуме Зенки: но на самом деле, тут без соответствующего навыка не обойтись!

var list = project.Lists["b"]; //Переменная содержащая искомую строку var pattern = project.Variables["domain"].Value; if(list.Contains(pattern)) { return list.IndexOf(pattern); } return "not match";

Далее ищем позицию своего домена в списке и кладем полученные данные в базу SQL. Делается это так:

INSERT INTO `serp_{-Variable.domain-}` (`engine`,`key`,`position`,`link`,`date`) VALUES ('{-Variable.search_system-}', '{-Variable.key-}', '{-Variable.check-}', '{-Variable.href-}', '{-Variable.date-}')

Где {-Variable.search_system-} - это "Яндекс", {-Variable.check-} - текущая позиция домена в поиске, {-Variable.href-} - собственно, сама ссылка на страницу.

Шаг второй - подключение Syntrans

Мы получили только что позиции, которые теперь нужно внести в соответствующие поля HTML страницы, а красивое оформление предоставит решение под названием "Syntrans". Это пак или набор скриптов и прочего кода, которые вместе образуют полноценные страницы с требуемыми шрифтами, кнопками и т.д. Нас интересует в данном конкретном случае графики и линии.

Переходим по пути "main-filessyntranshorizontalassetspluginsapexcharts-bundlejs", открываем файл "apex-custom.js" в текстовом редакторе и правим списки позиций. Да, нужные элементы находятся в файле скриптов, как бы странно это не звучало. Что именно менять я расписывать не буду, т.к. это нужно действительно изучать самостоятельно или просить профессионалов разобраться в коде.

Если график нужен попроще, то можно просто использовать другие библиотеки и внести код HTML с нуля. Например, вот пример обычного (я пользовался "anychart") взаимодействия стандартных скриптов и фреймов:

Фреймы

Ну, а если эксплуатировать "Syntrans", то можно получить такой результат:

SERP

Преимущества такого подхода: выбор линий происходит адаптивно, на основе выбранного словосочетания (в правом верхнем углу экрана). Также вы сможете поменять фон, подобрать шрифты, увеличить размер элементов через код CSS и многое другое.

serp

А самое главное, данные можно экспортировать в CSV, SVG, PNG!

Статья была полезна?

A
Admin

Блогер и преподаватель по темам фотографии, дизайна и цифрового творчества.

Все статьи