Задача [AI11]: Загрузка новостей и комментариев без RSS

Формулировка проблемы: необходима возможность загрузки новостей и комментариев к новостям из источников, не поддерживающих формат RSS, в систему Arta Intelligence.

Решение: Чтобы загрузить новости и/или комментарии к новости из источника, не поддерживающего RSS, необходимо в модуле администрирования добавить новый источник, указав при этом тип источника — «Веб-сайт без RSS».

Рисунок 335. Модуль администрирования

Модуль администрирования

Рисунок 336. Добавление источника (без RSS), часть 1

Добавление источника (без RSS), часть 1

Рисунок 337. Добавление источника (без RSS), часть 2

Добавление источника (без RSS), часть 2

Все шаблоны формируются с помощью расширения для браузера Google Chrome (Chromium) Arta Extension 2.2.

Как установить расширение для Google Chrome (Chromium)?

Расширение состоит из двух основных элементов:

Компонент, располагаемый на странице включает в себя:

  1. Панель с кнопками:

    • «Комментарии» — для создания нового шаблона для комментариев;

    • «ФинишКомментарий» — для сохранения шаблона для комментариев в хранилище;

    • «Новости» — для создания нового шаблона для новости;

    • «ФинишНовости» — для сохранения шаблона для новости в хранилище.

  2. «Все ссылки на странице» — отображает все ссылки, которые есть на данной странице сайта.

  3. «Выбранные ссылки на странице (клавиша z)» — отображает ссылки, которые выбрал пользователь.

Для выбора ссылки можно использовать стрелочки вправо (для добавления) и влево (для удаления), предварительно выделив перемещаемую ссылку.

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

  1. «Regex шаблон выбранных ссылок» — отображает шаблон выбранных ссылок .

Примечание: Чем больше выделенных ссылок, тем точнее генерируется шаблон выбранных ссылок.

Для нажатой кнопки «Комментарии»

Для нажатой кнопки «Новости»

5

«Выбранные блоки комментариев (клавиша x)» — отображает блоки комментариев, которые выбрал пользователь. Для выбора блока комментария необходимо, чтобы фокус был непосредственно на странице сайта, навести курсор на комментарий и нажать соответствующую клавишу.

«Выбранный блок заголовков (клавиша v)» — отображает блоки заголовков, которые выбрал пользователь. Для выбора блока заголовков необходимо, чтобы фокус был непосредственно на странице сайта, навести курсор на заголовок новости (статьи) и нажать соответствующую клавишу.

6

«Выбранный блок новостей (клавиша v)» — отображает блоки заголовков, которые выбрал пользователь. Для выбора блока новости необходимо, чтобы фокус был непосредственно на странице сайта, навести курсор на текст новости (статьи) и нажать соответствующую клавишу.

7

«Шаблон комментариев» — отображает шаблон выбранных блоков комментариев. Примечание: Чем больше выделенных комментариев, тем точнее генерируется шаблон выбранных блоков комментариев.

«Шаблон заголовка» — отображает шаблон выбранных блоков заголовков. Примечание: Чем больше выделенных заголовков (если таковых несколько) тем точнее генерируется шаблон выбранных блоков заголовков.

8

«Шаблон новости» — отображает шаблон выбранных блоков новостей (если таковых несколько вообще). Примечание: Чем больше выделенных комментариев, тем точнее генерируется шаблон выбранных блоков новостей.

Шаблон для комментариев

Поле не обязательно для заполнения, он необходим для получения комментариев по новостям (статьям) добавляемых источников.

Как сформировать шаблон для комментариев в расширении?

Нажимается кнопка «ФинишКомментарий», нажимается иконка расширения.

Шаблон для комментариев получается с полученного шаблона :

{ "host":"dialog.kz", - хост новостного сайта "input":["?cpage=2#comment","?cpage=1#comment"], - массив выделенные страницы комментариев "pattern":"^\?cpage=.$", - regex шаблон* url страницы комментариев (для постраничного обхода всех страниц) "comment":{ "input":["html body div#wrapper div#main div#content div.twocol div.content div#comment div.comment.nextLevel div.body p","html body div#wrapper div#main div#content div.twocol div.content div#comment div.comment.unloged div.body p"], - массив выделенных блоков комментариев "header":"", -шаблон блока заголовка "pattern":"html body div#wrapper div#main div#content div.twocol div.content div#__comment div.body p" - шаблон блока комментария } }


 Шаблон для получения новостных ссылок

Шаблон для заголовка и содержимого статей (новостей)

Поля обязательны для заполнения, они необходимы для формирования ссылки на каждую новость (статью).

Как сформировать шаблоны для новостей в расширении?

Выбранный текст новости выделится красным цветом, в компонент добавится этот текст и сформируется по нему шаблон.

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

Если в шаблоне ссылки содержится знак ?, то его надо экранировать ^?cpage=.*$» → «^\\?cpage=.*$.

Нажимается кнопка «ФинишКомментарий», нажимается иконка расширения.

Шаблон для получения новостных ссылок получается с полученного шаблона :

{ "host":"dialog.kz", "input":["?lan=ru&id=81&pub=3358","?lan=ru&id=93&pub=3357","? lan=ru&id=81&pub=3358"], "pattern":"\?lan={2}&id=\d&pub=\d", "comment":{ "input":[], "header":"", "pattern":"" } }

а именно \?lan=.{2}&id=\d*&pub=\d*.

Заполняется поле «Шаблон для получения новостных ссылок» выбранным шаблоном \?lan=.{2}&id=\d*&pub=\d*

Шаблон для заголовка и содержимого статей (новостей) получается с полученного шаблона :

{ "host":"dialog.kz", "input":[], "pattern":"", "comment":{ "input":["html body table tbody tr td table tbody tr td table tbody tr td table tbody tr td table tbody tr td.paragraph-body div"], "header":"html body table tbody tr td table tbody tr td table tbody tr td table tbody tr td h1", "pattern":"html body table tbody tr td table tbody tr td table tbody tr td table tbody tr td table tbody tr td.paragraph-body div" } }

Проверить полученные шаблоны на валидность можно следующим ресурсом: http://jsonlint.com/