我正在尝试使用多个RSS源,并使用PHP将它们的内容放入MySQL数据库中。存储此内容后,我将在自己的页面上显示,并将内容合并到一个RSS Feed中。 (可能在过滤后)
之前我还没有处理过RSS Feed,所以我想知道这样做的最佳框架/方法。我已经阅读过基于DOM的解析,但是听说它需要大量内存,有什么建议吗?
答案 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,插入到数据库中);
答案 3 :(得分:0)
有几个RSS解析库,包括Magpie和one in pear。
我会选择一个解析器,然后通过一个循环运行它,并将数据提供给数据库。确保你弄清楚你想要运行脚本的频率,并考虑这是从cron运行,还是只是偶尔加载的页面的一部分。