Новый плагин — граббер для WP

25 Июл
2011

ElSa Grabber v 3.0

Данный документ описывает принцип и настройку работы плагина для WP – ElSa grabber v 3.0 (плагин).

Общее сведения.

Плагин предназначен для копирования материалов с других сайтов (сайта – источник) на сайт где он установлен (сайт – приемник).
В числе возможностей плагина:

1. Парсинг RSS ленты сайта – источника и извлечение информации из нее.
2. Парсинг HTML страниц сайта – источника и извлечение информации из нее.
3. Закачка картинок с сайта – источника на сайт – приемник.
4. Поддержка разных кодировок текста.
5. Поддержка синтаксически неправильного HTML.
6. Импорт полученных данных на сайт – приемник.
7. Запуск по расписанию.
8. наглядное тестирование задания и средства отладки.

Принцип работы.
В административном меню плагина, создается задание на выполнение, в числе директив которого указываются параметры необходимые для выполнения процедуры парсинга (все параметры будут рассмотрены далее), после активации задания, плагин по расписанию, указанному в тексте задания выполняет перечень действий.
ВАЖНО!
Реализация выполнения заданий по расписанию не использует внутренние возможности WP, данная возможность реализуется за счет установки нового задания напрямую в CRON. Данный документ не рассматривает подробно процесс настройки демона CRON.

Системные требования.
PHP не ниже 5.2., операционная система любая, на которой крутится php, однако лучше всего подойдут nix системы, т.к. при работе на win возможны фельдопердозные глюки (на самом деле должно работать и на win, однако, когда речь идет о великом творение Майкрософта лучше оговориться.). Из числа расширений PHP крайне необходимы следующие: iconv, tidy, simplexml.  Крайне желательно, хотя и не обязательно, иметь возможность менять параметр Time_limit (намек на то, что скорее всего, для работы плагина потребуется vds/vps сервер).

Установка и первоначальная настройка плагина.

Установка.
Скачиваете архив плагина.
Закачиваете его к себе на сервер в папку – wp-content/plugins/ или в администраторском меню WP устанавливаете плагин как и многие другие плагины.
Активируете плагин.
В директории /wp-content создаете (по-умолчанию используется) папку «elsa» устанавливаете на нее права 777.
Добавьте в CRON файл runfromcron.php находящийся в корне папки с плагином и установите периодичность запуска раз в минуту.
На этом установка плагина завершена.

Изменение параметров плагина.

Есть только два параметра которые нужно установить самостоятельно, если установленные по умолчанию не подходят. Это абсолютный путь к директории куда плагин будет переписывать картинки, и путь к этой же директории но уже от корня сайта.

Пример настройки путей

После того как вы установите свои параметры, не забудьте создать директорию и установите на не права 777.

Создание задания.
Задания являются ключевым моментом использования плагина. Вы можете создать не ограниченное количество заданий которые будут выполняться по расписанию. Логически, задание представляет собой набор правил парсинга RSS ленты сайта – источника. Для каждого источника информации следует создавать свое правило. Все поля, кроме поля информация, должны быть заполнены.

Поле:

  • Название – содержит название задания.
  • Период запуска – Периодичность запуска задания
  • Адрес RSS – содержит ссылку на RSS ленту сайта – источника
  • Информация  – примечание к заданию (не обязательное поле)
  • Текст задания – собственно, само задание по парсингу

Пример настройки задания

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

Пример списка заданий

Значок:
— просмотр задания и тестирование.

   

— активация задания.

   

— дезактивация задания.

   

— редактировать задание.

   

— удалить задание.

   
На этом ознакомительная часть описания заканчивается, однако, для того, что бы заставить плагин работать вам нужно прочитать еще несколько параграфов.

Принцип работы по расписанию

Плагин умеет работать по расписанию, но это достигается не внутренними средствами WP, а путем прописывания специального скрипта в CRON.
Пример команды для CRON‘а — /usr/local/bin/GET http://ваш-сайт.com/wp-content/plugins/elsa/runfromcron.php. Периодичность запуска — каждую минуту.

Когда вы создаете задание то указываете период запуска, данное значение будет указывать скрипту когда нужно запускать выполнение задания, однако, само значение не очевидно указывает период, как может показать на первый взгляд. Дело в том, что запуск будет происходить только при условии, что остаток от деления текущего числа минут на параметр “Период запуска” будет равен нулю. Например:

1. При настройке CRON‘а вы указали, что запуск скрипта runfromcron.php должен происходить каждую минуту (а именно так и нужно делать!), а период запуска в задании стоит “30”, тогда задание будет выполняться когда целое число минут, текущего времени будет равно “30”, т.е. 0:30, 1:30, 2:30 и т.д.

2. При настройке CRON‘а вы указали, что запуск скрипта runfromcron.php должен происходить каждую вторую минуту, а период запуска в задании стоит “27”, тогда задание выполнится только тогда, когда число минут текущего времени будет 54, т.е. 0:54, 1:54, 2:54 и т.д.

3. При настройке CRON‘а вы указали, что запуск скрипта runfromcron.php должен происходить каждую пятую минуту, а период запуска в задании стоит “11”, тогда задание не будет выполняться вообще.

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

Составление текста задания

Вступление.
Для более подробного понимания механизма парсинга, будет лучше если вы ознакомитесь с спецификацией RSS, а так же с xPath.
Скорее всего, вам трудно будет составлять задания, если вы совсем не знакомы с принципами программирования. Знание программирования не обязательно, однако, данный навык существенно облегчит вам понимание процесса создания задания.

От слов к делу.
В тексте задания, единственная переменная которую не нужно объявлять заранее это %_ITEM_%, соответствует элементу <item> в RSS.
Т.к.  RSS поток содержит, как правило, несколько элементов <item>,  парсинг этих элементов нужно осуществлять в цикле, обозначением начала цикла в тексте задания служит слово — “DO”, концом — “END”.

Пример, правильно составленного задания:

DO
%post_name%=_ext(%_ITEM_%,title);
%post_link%=_ext(%_ITEM_%,link);
%post_date%=_ext(%_ITEM_%,pubDate);
%post_cat%=_ext(%_ITEM_%,category);
%post%=_get(%post_link%);
%post%=_clearHtml(%post%);
%post_cotent%=_extHtml(%post%,.//*[@id=‘pageContent’]/div[1]/div[1]/div[2]/div[3]);
%post_img%=_extHtml(%post%,.//*[@id=‘pageContent’]/div[1]/div[1]/div[2]/div[3]/img„src);
%post_image%=_makeTag(img);
%post_image%=_setAttr(%post_image%,alt=‘alt text for image’,title=‘title text for  image’,vspace=‘5’,hspace=‘10’,class=‘imageclass’,src=’%post_img%’);
%post_cotent%=_join(%post_image%,%post_cotent%);
%post_tags%=_extHtml(%post%,.//*[@id=‘pageContent’]/div[1]/div[1]/div[2]/div[2]);
%post_tags%=_stripHTML(%post_tags%);
%post_tags%=_strReplace(%post_tags%,Теги:,);
%IMP%=_insertPost(%post_name%,1,post,%post_tags%,1,%post_cotent%,%post_date%,%post_name%);
END

Данный набор директив (назовем их так) будет выполнен для каждого элемента <item> из RSS ленты источника, т.к. все они (директивы) находятся между DO и END.
После того как вы написали текст задания, проверьте, так ли оно работает как вам хочется, для этого в списке заданий кликните по кнопке — “просмотр задания” и в открывшемся окне нажмите кнопку — “тестировать”.

Синтаксис написания задания.

Каждое логическое действие должно заканчиваться знаком точки с запятой — “;”.
Параметры внутри функции разделяются запятыми — “,”.
В левой части выражения всегда! находится имя переменной, даже если функция не возвращает никакого результата, то все равно выражение начинается с имени переменной.
Имя переменной разделяется от функции знаком “=”.
Имя переменной начинается и заканчивается знаком “%”.
Имя функции всегда начинается со знака “_”.
Параметры функции передаются в скобках “()”.

Список функций.

_addMore(text, number)

Пример: %newtext%=_addMore(%oldtext%,500);

Функция добавляет в текст тег “more”.
Параметры:

text– текст в который нужно вставить тег

number — число знаков после которого нужно вставить тег.
Возвращает:

Возвращает текст с вставленным тегом.

_clearHtml(text)

Пример: %newtext%=_clearHtml(%oldtext%);

Функция удаляет из текста тег “<script>”, т.е. возвращает текст без блоков <script> </script>

Параметры:

text — текст который должен быть очищен от блоков
<script> </script>

Возвращает:

Новый вариант текста очищенный от блоков

_copy(var)

Пример: %newvar%=_copy(%oldvar%);

Копирует значение переменной var в переменную newvar

Параметры:

var — копируемая переменная

Возвращает:

Новую зарегистрированную переменную newvar

_dump(var)

Пример: %justname%=_dump(%var%);

Отображает содержимое переменной var в окне тестирования задания

Параметры:

var — имя переменной значение которой нужно проверить

Возвращает:

Не возвращает ничего

_ext(item,element_name)
Пример: %item_element%=_ext(%_ITEM_%,element_name);

Возвращает содержимое елемента element_name из текущего <item> в RSS потоке.

Параметры:

%_ITEM_% — зарезервированное название элемента <item>

element_name — имя элемента RSS поторка значение которго нужно извлечь

Возвращает:

Содержимое element_name

_extHtml(text,xPath,encode,tag)

Пример: %str%=_extHtml(text,.//*[@id=‘pageContent’]/div);

Пример2: %str%=_extHtml(text,.//*[@id=‘pageContent’]/img,utf8,src);

Возвращает содержимое елемента указанного в xPath из переменной text

Параметры:

text — html текст из которго нужно извлечь значение данные

xPath — xPath-путь до нужных данных

encode — кодировка входящего текста (не обязательный параметр, по-умолчанию utf-8)

tag — указывается ечли нужно узнать не содержимое определенного элемента, а значение атрибута (не обязательный параметр)

Возвращает:

Содержимое xPath-пути или значение атрибута указанного в xPath-пути.

_get(url)

Пример: %text%=_get(http://google.com);

Возвращает содержимое файла указанного в url

Параметры:

url — Ссылка на нужный файл

Возвращает:

Содержимое файла

!!!ВНИМАНИЕ!!!
Это экспириментальная функция. Может не работать!

_iconv(text,incharset,outcharset)

Пример: %text%=_iconv(%old_text%,cp1251,utf-8);

Перекодирует перменную text из кодировки incharset в кодировку outcharset

Параметры:

text — Текст для перекодировки

incharset — Текущая кодировка переменной text

outcharset — Нужная кодировка

Возвращает:

Переменную text в новой кодировке

_insertPost(post_title,post_author,post_type,tags_input,post_category,post_content,post_date,post_name)

Пример: %IMP%=_insertPost(%title%,%author%,%type%,%tags%,%category%,%content%,%date%,%title%);

Создает новый пост.
Перед вставкой нового поста, функция проверят нет ли уже такого же поста в базе данных WP.
Проверка происходит по параметру post_title, только он один участвует в проверки на существование.
Т.е. если вы ранее такой же пост удалили в корзину то функция не станет вставлять его еще раз.

Параметры:

post_title — Заголовок нового поста

post_author — Автор материала нового поста

post_type — Тип поста (всегда используйте значение “post”)

tags_input — Теги нового поста перечисленные через запятую

post_category — Категория нового поста

post_content — Содержимое нового поста

post_date — Дата публикации нового поста

post_name — Имя нового поста (как правило совпадает с post_title. Из этого параметра формируется slug)

Возвращает:

Не возвращает ничего

_join(text,text1,text2,text3,…)

Пример: %text%=_join(%var1%,%var2%,%var3%,%var4%,…);

Склеивает” части в одно целое

Параметры:

text,text1,text2,… — Кусочки из которых нужно получить одно целое

Возвращает:

Склееную” строку

_join(text,text1,text2,text3,…)

Пример: %text%=_join(%var1%,%var2%,%var3%,%var4%,…);

Склеивает” части в одно целое

Параметры:

text,text1,text2,… — Кусочки из которые нужно “склеить”

Возвращает:

Склееную” строку

_loadFtp(url)

Пример: %img_url%=_loadFtp(%link_pict%);

Загружает в локальную папку удаленный файл

Параметры:

url — Ссылка на файл который нужно скопировать

Возвращает:

Путь к скопированному файлу если все прошло успешно. В случае любого сбоя, возвращает ссылку на файл uncopy.gif из папки images, которая расположенна в корне папки плагина.

_makeTag(tagname)

Пример: %newtag%=_makeTag(img);

Создает тег tagname

Параметры:

tagname — Тег html который нужно создать

Возвращает:

Возвращает строку — <tagname>

_setAttr(tag,attrname=attrvalue)

Пример: %newtag%=_setAttr(%post_image%,alt=‘alt text for image’);

Добавляет к тегу tag новый атрибут attrname со значением attrvalue

Параметры:

tag — Тег html который нужно изменить

attrname=attrvalue — пара ключ=значение, где attrname — имя нового атрибута, а attrvalue — его значение

Возвращает:

Возвращает измененный тег

_setEncoding(text, charset)

Пример: %text%=_setEncoding(%old_text%,utf-8);

Добавляет! (не изменяет!) в тег мета тег http-equiv с указание кодировки.
Данная операция необходима, если кодировка не указанна у источника. Используйте эту функцию только если вы абсолютно уверенны, что text содержит html документ.

Параметры:

text — текст html документа

charset — кодировка

Возвращает:

Html документ с установленной кодировкой

_stripHTML(text)

Пример: %text%=_stripHTML(%old_text%);

Удаляет из text все зарезирвированные слова языка разметки Html.

Параметры:

text — текст html который нужно очистить от всех тегов

Возвращает:

Текст без html разметки

_strReplace(text,search,repalce)

Пример: %text%=_strReplace(%old_text%,слово1,слово2);

Заменяет в text последовательность search на repalce

Параметры:

text — изменяемый текст

search — что нужно поменять

repalce — на что нужно поменять

Возвращает:

Возвращает версию строки text в которой все вхождения search замененны на repalce

Заключение.

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

Мы будем вам искренне признательны, если в случае обнаружения ошибки в работе плагина, вы, вместо проклятия его разработчиков, опишите проблему и отправите нам на электронный ящик. Отправлять электронные письма нужно так же и в том случае, если у вас возникли любые вопросы по функционированию плагина или есть какое либо предложение по его дальнейшему развитию.

DOWNLOAD ElSa Grabber v 3.0

С наилучшими пожеланиями ElSa group.

Elchepunebrek.ru
Savitov.ru

слов — 1561, знаков: с пробелами — 14595, без пробелов — 13035
google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Читайте так же:

2 Комментариев к Новый плагин — граббер для WP

Аватар

shurupp

Ноябрь 21st, 2012 | 17:20

Уважаемые авторы плагина. Отличный плагин, большой потенциал, но увы оказался для меня слишком сложен. Сломал об него мозг. Скачал, поставил, наладил крон, завел задание, но не смог разобраться как настроить парсер для обработки целевого новостного сайта.
Вкратце моя задача такая: есть новостной сайт аналогичный newsland.ru, у него есть RSS, нужно его парсить и выкладывать у себя его контент с переодичностью 1 минута. Вобще ровно то же самое что делает Ваш плагин Elche_grabber, только сайт-источник контента другой.
Прошу помочь настроить, готов оплатить помощь. Мой skype — prodavator. Напишите мне плз. Спасибо

Аватар

admin

Февраль 4th, 2013 | 04:48

Я больше не поддерживаю плагин. Пишите Савитову в со-авторстве с котором мы его написали. savitov.ru его сайт

Комментировать

Вы должны войти чтобы комментировать.


Наверх