Каков наилучший способ получить RSS-каналы в базе данных MySQL

Я пытаюсь взять несколько RSS-каналов и помещать их содержимое в базу данных MySQL с помощью PHP. После того, как я сохраню это содержимое, я покажу на своей собственной странице, а также объединим содержимое в один RSS-канал. (Возможно, после фильтрации)

Я раньше не обращался с RSS-каналами, поэтому мне интересно, какая именно платформа или метод этого делать. Я читал о разборке на основе DOM, но слышал, что для этого требуется много памяти, любые предложения?

Ответ 1

Magpie является разумным парсером RSS для PHP. Прост в использовании:

require('rss_fetch.inc');
$rss = fetch_rss($url);

Элемент, подобный этому, например:

<item rdf:about="http://protest.net/NorthEast/calendrome.cgi?span=event&ID=210257">
<title>Weekly Peace Vigil</title>
<link>http://protest.net/NorthEast/calendrome.cgi?span=event&ID=210257</link>
<description>Wear a white ribbon</description>
<dc:subject>Peace</dc:subject>
<ev:startdate>2002-06-01T11:00:00</ev:startdate>
<ev:location>Northampton, MA</ev:location>
<ev:enddate>2002-06-01T12:00:00</ev:enddate>
<ev:type>Protest</ev:type>
</item>

Будет преобразован в массив, подобный этому:

array(
    title => 'Weekly Peace Vigil',
    link => 'http://protest.net/NorthEast/calendrome.cgi?span=event&ID=210257',
    description => 'Wear a white ribbon',
    dc => array (
            subject => 'Peace'
        ),
    ev => array (
        startdate => '2002-06-01T11:00:00',
        enddate => '2002-06-01T12:00:00',
        type => 'Protest',
        location => 'Northampton, MA'
    )
);

Затем вы можете просто выбрать бит, который вы хотите сохранить в БД, и прочь от вас!

Ответ 2

Лучший парсер PHP из SimplePie, IMHO. Я использую его в течение многих лет. Это отлично подходит для захвата и анализа: RSS 0.90, RSS 0.91 (Netscape), RSS 0.91 (Userland), RSS 0.92, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0; включая следующие пространства имен: Dublin Core 1.0, Dublin Core 1.1, GeoRSS, iTunes RSS 1.0 (в основном полный), Media RSS 1.1.1, RSS 1.0 Модуль контента, W3C WGS84 Basic Geo, XML 1.0, XHTML 1.0

У SimplePie 1.2 даже есть кэширование базы данных, поэтому у него должно быть все, что вам нужно, чтобы делать то, что вы хотите.

И если вам нужно разобрать необработанные XML файлы, попробуйте использовать XMLize

-Trystian

Ответ 3

Для очень простой взломанной script, которая просто работает от конца до конца (разбор RSS, вставка в БД);

http://code.google.com/p/rssingest/

Ответ 4

Существует несколько библиотек разбора RSS, в том числе Magpie и один в груше.

Я бы выбрал синтаксический анализатор, а затем запустил его через цикл с данными для его подачи в базу данных. Убедитесь, что вы выяснили, как часто вы хотите запустить script, и подумайте, работает ли он из cron или части страницы, которая загружается нечасто.