Ранее я уже рассказывал о том, как можно создать собственный SERPSearch engine results page (Результаты выдачи поисковой системы). Теперь настала очередь сделать по-настоящему классный проект, который бы не только выполнял необходимые задачи, но и выглядел соответствующим образом.
Сегодня мы будем делать, а точнее наблюдать последовательно за:
- Скриптом в программе ZennoPoster, выдающим результаты поисковой выдачи по заданным нами ключевым словам. При этом, сами словосочетания будут класться и браться из полноценной базы данных формата SQL, что облегчит сбор информации и увеличит скорость парсинга. Кроме того, мы будем пользоваться современными инструментариями для действительно качественного продукта, который можно смело показывать остальным.
- Редактированием исходников в HTML, JS, XML и других форматах для определения нужных данных. Например, нам потребуется ввод списков в определенном виде, изменение названий и т.п.
Шаг первый - SERP скрипт для Яндекса
Для начала работы нам нужен софт ZennoPoster (о его преимуществах писал ранее не в 1 статье). Действие №1 - подключаем базу данных, где прописываем ключевые слова и другие данные.
Во второй таблице будем собирать, собственно, сами позиции. Почему всю информацию не внедрели в 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"]
Для быстрого сбора позиций в Яндексе нам потребуется инструмент под названием xml.yandex.ru. К его плюсам можно отнести не только скорость взятия информации, но и удобство в целом: например, за один запрос можно вывести данные 100 сайтов по заданному ключевому слову. Помимо прочего, у вас исключены ошибки, которые присущи обычному поиску с его капчами, кешем и другими нюансами.
Примечание: вкратце - Яндекс предлагает за так называемые лимиты - тире запросы к их серверу = выдачу поисковой системы по нужным вам словосочетаниям. Чем мощнее ваш ресурс, тем этих лимитов больше. Ну, а если ресурс нулевой, и вы только начинаете продвижение в сети, то этих лимитов вам не видать как своих ушей :) Но, правда, их можно купить извне!
Вы можете отдельно сохранить выдачу поиска в таблице, но в базе данных мы сохраняем только свой домен и информацию исключительно для него!
Во входных настройках ЗенноПостера указываем домен парсинга, регион. Можете самостоятельно внести те элементы, изменение которых происходит у вас часто...
Последовательность действий
Итак, подготовительные реакции были произведены, настало время изучить последовательность действий. Первым делом подключаемся к 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);
}
}
Разбираем код: просто удаляем пустые строки в списке, т.к. они могут возникнуть, если вы вносите ключевые слова вручную.
Дату можно использовать в данном варианте, т.е. только число и месяц (без года) - это намного читабельнее при больших объемах данных.
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", то можно получить такой результат:
Преимущества такого подхода: выбор линий происходит адаптивно, на основе выбранного словосочетания (в правом верхнем углу экрана). Также вы сможете поменять фон, подобрать шрифты, увеличить размер элементов через код CSS и многое другое.
А самое главное, данные можно экспортировать в CSV, SVG, PNG!
Статья была полезна?