29.03.2024
RSS агрегатор на PHP

Как создать RSS агрегатор самостоятельно?

Рейтинг:  3 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда не активнаЗвезда не активна
 

Вы никогда не задумывались, как одни сайты отображают сводные данные с других сайтов, спрашивает Кент Ельчук на страницах Линукс Формат? Этот трюк можно выполнить несколькими способами, в том числе за счет привилегий на доступ к базам данных источников, web-скрейпинга или употребления лент RSS —да и совместив какие-то из них.

В нашем уроке мы рассмотрим, как собирать и комбинировать данные с помощью лент RSS. RSS, что расшифровывается как Rich Site Summary (а позже — Really Simple Summary), существует уже давно — и берет свое начало со времени работы Раманатхана В. Гухи [Ramanatlian V. Guha] в Apple Computer’s Advanced Technology Group в середине 1990-х — и вы, вероятно, используете их каждый день для отображения новостных лент среди прочей полезной информации.

RSS — это, как правило, XML-файлы, которые содержат данные внутри структурных тэгов; допустим, если вы зайдете в Craigslist и просмотрите регулярные записи, то увидите обычный список пунктов Это исходный код HTML. Но в Craigslist RSS Feed те же элементы будут отображаться не в виде HTML, а в форме XML-файла, который хранит каждый список внутри родительского тэга «элемент [item]». Каждый тэг элемента содержит информацию о записи, в том числе название, дату и описание.

Захват и объединение RSS-лент с помощью простого скрипта PHP — это быстрый и легкий способ получить желаемые данные и вывести на экран нужные вам результаты. Источниками информации для RSS-лент служат многие крупные рекламные и аукционные сайты (такие как eBay, eBay Classified, Monster, Craigslist и т.д.) — и многие другие, в том числе сайты трудоустройства (например, Careerßuilder и Indeed позволяют получить XML-ленты, которые также можно синтаксически проанализировать).

Во многих случаях для доступа к лентам RSS достаточно обратиться к определенному URL, а иногда необходим API с указанным ключом издателя. Одним из примеров сайтов, которые требуют ключ издателя для получения API, является популярный сайт поиска работы, lndeed.com.

Поскольку нам нужна была тема для примера, мы расскажем, как группировать RSS из различных источников, упомянутых выше. Наши примеры покажут, как сузить круг поиска работы по местоположению и должности, или же запросто сделать себе личный RSS и XML-агрегатор для отображения элементов сделки, которую вы хотите совершить через eBay, Craigslist и т.д.

Кроме того, вы сможете сделать так, чтобы результат загружался в вашем браузере на локальном web-cepaepe, например, LAMP в дистрибутиве Ubuntu. Установка LAMP займет всего пару минут, но мы также расскажем, как это делается. Помимо отображения результатов в web-браузере, будет ссылка на исходное сообщение, и вы сможете вернуться туда, чтобы выполнить любые действия, например, узнать о вакансии и т.д.

С чего начать создавать RSS агрегатор

Итак, закатываем рукава и начнем разбираться, как быть в курсе всего. Первое, что вам нужно для агрегирования и анализа RSS-лент — это рабочий web-сервер с несколькими дополнительными пакетами, такими как РНР. Поскольку дело это минутное, инструкции по его установке мы приведем потом. Те, кто уже думают «О Боже, опять установка web-cepeepa», могут это пропустить.

Для установки сервера Apache выполните следующий код:

sudo apt-get update
sudo apt-get install apache2
Затем установите пакеты PHP:
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

На нашем уроке для анализа лент RSS мы скачаем готовый скрипт, а также приведем методику, как сделать это вручную. В роли парсера выступит Magpie RSS. Примечание: расположен он на Sourceforge, но существуют и альтернативы без использования этого сайта, например, Simple Pie.

Скачав Magpie, сохраните его в папке www или html: в новых версиях Ubuntu, к примеру, сетевые папки Apache находятся в /var/www/html, в более старых, такие, как Ubuntu 12.04, корневой сетевой папкой является /var/www.

Независимо от корневой папки, теперь вам нужно создать еще одну, с именем rss. Туда вы сохраните извлеченную папку Magpie, с именем magpierss-0.72. Для простоты переименуйте ее по правому щелчку мыши в magpie, В дополнение к папке magpie, у вас есть два файла: index.php и customs.php. Файл index.php нужен для отображения содержимого и чтобы открывать его в браузере и customs. A php включает функции приема URL и сбора данных из источников RSS.

Примечание: большинство лент в образце кодирования обрабатываются с помощью Magpie, за исключением Indeed и Careerbuilder. Их анализ осуществляется с помощью встроенного класса PHP — DQMDocument().

Код, используемый на нашем уроке, выложен на LXFDVD и на сайт, то есть отредактировать вам придется только строки, касающиеся фактических адресов, которые находятся в районе строки 3 в файле index.php Это ваш исходный список URL-адресов для RSS-лент, которые вы хотите объединить. Тем не менее, возможно, вы также захотите кое-что изменить в пользовательских настройках анализатора, в районе строки 108 в файле customs.php. В настоящее время пользовательские URL-адреса настроены на Indeed и Careerbuilder,

Вам нужно раскомментировать адреса для CareerBuilder и Indeed, поскольку оба они требуют ключа издателя. Если вы зарегистрируетесь и получите ключи разработчика, все, что вам нужно сделать, это заменить YOUR_KEY_HERE на соответствующие ключи. Indeed Publisher Program доступна на www.indeed.com/publisher, а информацию о том, как собрать результаты поиска для сайта CareerBuilder, можно найти на htto://bit.lv/CareerBuiiderAPI.

Теперь, разобравшись с основами, самое время пройтись по коду и объяснить, как это работает. Для начала откройте файл Index, php в web-браузере. URL-адрес на локальном компьютере будет http://localhost/rss или http://localliost/rss/index.php. В верхней части файла, создается массив с именем $urls. содержащий ленты, которые вы хотите агрегировать.

Получить RSS-ленты с различных источников довольно просто, но у каждого поставщика будет свой способ их поиска. Безусловно, какие-то найти будет легче, какие-то труднее. Давайте начнем с Craigslist. Если перейти на craioslist.co.uk и посмотреть вакансии в разделе квалифицированного труда/ремесла в Лондоне, вы увидите множество записей. По нажатию на кнопку RSS в правом нижнем углу экрана вы получите эту ленту, или можно сначала сузить область поиска, а затем добавить ее. В верхней левой части экрана нужно проверить окно «контракт«. Затем нажмите на желтый значок RSS в правом нижнем углу, и вы увидите страницу ленты. URL-адрес в браузере является примером того, что вы могли бы добавить в ваши URL-адреса лент в верхней части страницы index.php,

Несколько источников для RSS

Другой пример будет посвящен сбору RSS-лент с eBay, и здесь все не столь очевидно. Но вы можете сузить поиск до того, что вам нужно, добавив &_rss=1 в конце URL в web-браузере, чтобы увидеть новую страницу с нужной ленты.

Следующие две строки указывают файл, который Magpie будет использовать для анализа и файл customs.php, который использует пользовательские функции и проверки. Дальше немного посложнее. В районе строки 108 в customs.php вы увидите функцию, которая проверяет, существует ли массив $urls. Получив подтверждение; она проходит через цикл по каждому элементу для каждого URL.

Если первый набор условий выполнен, проверяется, содержит ли часть строки URL текст 'indeed' или ‘careerbuilder’. Встроенная функция PHP strpos() определяет, есть ли определенное слово в URL. Если ‘indeed1 или ‘careerbuilder’ в URL нет, запустится функция custom. url($urls) с соответствующим URL. Эта функция находится в верхней части customs.php.

Придаем стиль лентам и ссылкам в RSS

Поскольку вывод отображается в обычной таблице, пока что он не выглядит не особо стильно, но легко добавить плагин, который сделает его круче.

Набрав в web-поиске «лучшие быстрые плагины для таблиц загрузки», вы увидите, что есть много вариантов, равно как и учебников для добавления стилей, но мы быстро объясним, как сделать это с помощью плагина под названием Datatables, который можно скачать с datatables.net/downEQad/ download.

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

Хотя на LXFDVD мы разместили файл с именем mciex_slyled.php, я скоренько объясню, как легко добавить этот плагин. Для начала зайдите в файл и смените тип документа на html 5, Так, самый первый тэг может быть заменен на <!DOCTYPE HTML>. После этого добавьте заголовочную часть со ссылками на необходимые файлы.

Верхняя часть данных представлена ниже:

<head>
<link rel="stylesheet" type="text/css" href="//cdn. datatables.net/1.10.7/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="/code.jquery.com/jquery-1.1 Q.2.min.js"></script>
<script type="text/javascript" charset="utf8” srс="/cdn.datatables.net/1.107/js/iquery.dataTables.js”></ script>
<script type="text/javascript”>
$(document).ready(function () {
$(‘#example').DataTable();
} );</script>
</head>

Обратите внимание, что вы можете использовать файлы, загруженные с сайта Datatables, или ссылки из CDN (Content Delivery Network).

Осталось только добавить два атрибута в тэг таблицы:

id="exampler" class="display”

Теперь, загрузив страницу в web-браузере, вы увидите, что все выглядит намного элегантнее.

Те, у кого больше опыта кодирования, могут пойти немного дальше — например, использовать вспомогательные медиа-запросы и классы, чтобы менять размер текста и удалять столбцы, при изменении ширины используемого экрана.

  1. Последние
  2. Популярные

Популярное за неделю

Error: No articles to display

Самые популярные метки