Каков наилучший способ получить RSS-каналы в базу данных MySQL - PullRequest
9 голосов
/ 23 января 2009

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

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

Ответы [ 4 ]

9 голосов
/ 23 января 2009

Сорока - разумный парсер 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'
    )
);

Тогда вы можете просто выбрать биты, которые вы хотите сохранить в БД, и все готово!

7 голосов
/ 07 мая 2010

Лучший парсер PHP есть SimplePie , ИМХО. Я использую это в течение многих лет. Он отлично подходит для захвата и анализа следующего: 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

6 голосов
/ 31 октября 2010

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

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

0 голосов
/ 23 января 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...