将RSS源添加到MySQL数据库的最佳方法是什么?

时间:2009-01-22 22:29:25

标签: php mysql rss

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

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

4 个答案:

答案 0 :(得分:9)

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

然后你可以选择你要保存在数据库中的位然后离开!

答案 1 :(得分: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内容模块,W3C WGS84 Basic Geo,XML 1.0,XHTML 1.0

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

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

-Trystian

答案 2 :(得分:6)

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

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

答案 3 :(得分:0)

有几个RSS解析库,包括Magpieone in pear

我会选择一个解析器,然后通过一个循环运行它,并将数据提供给数据库。确保你弄清楚你想要运行脚本的频率,并考虑这是从cron运行,还是只是偶尔加载的页面的一部分。