9

我正在尝试获取几个 RSS 提要,并使用 PHP 将它们的内容放入 MySQL 数据库中。存储此内容后,我将显示在自己的页面上,并将内容合并到一个 RSS Feed 中。(可能过滤后)

我以前没有处理过 RSS 提要,所以我想知道这样做的最佳框架/方法是。我已经阅读了有关基于 DOM 的解析,但听说它需要大量内存,有什么建议吗?

4

4 回答 4

10

Magpie是一个合理的 PHP RSS 解析器。便于使用:

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'
    )
);

然后你就可以挑选出你想保存在数据库中的位,然后你就可以走了!

于 2009-01-22T22:31:52.400 回答
7

最好的 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 Content Module、W3C WGS84 Basic Geo、XML 1.0、XHTML 1.0

SimplePie 1.2 甚至有数据库缓存,所以它应该有你需要做的一切。

如果您需要解析原始 XML 文件,请尝试使用 XMLize

-崔斯特

于 2010-05-06T22:18:40.787 回答
6

对于一个非常简单的脚本,它只是端到端工作(解析 RSS,插入数据库);

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

于 2010-10-31T14:09:32.867 回答
0

有几个 RSS 解析库,包括Magpiepear 中的一个

我会选择一个解析器,然后用数据循环运行它以将其输入数据库。确保你弄清楚你想要运行脚本的频率,并考虑它是从 cron 运行,还是从不经常加载的页面的一部分运行。

于 2009-01-22T22:36:48.677 回答