我正在尝试使用几个RSS源,并将它们的内容放入使用PHP的MySQL数据库中。在我存储这些内容后,我将显示在我自己的页面上,并将内容合并到一个RSS Feed中。 (可能经过滤后)什么是将RSS源送入MySQL数据库的最佳方式
我以前没有处理过RSS源,所以我想知道做这个的最好的框架/方法是。我已经阅读过基于DOM的解析,但是听说它需要大量内存,有什么建议吗?
我正在尝试使用几个RSS源,并将它们的内容放入使用PHP的MySQL数据库中。在我存储这些内容后,我将显示在我自己的页面上,并将内容合并到一个RSS Feed中。 (可能经过滤后)什么是将RSS源送入MySQL数据库的最佳方式
我以前没有处理过RSS源,所以我想知道做这个的最好的框架/方法是。我已经阅读过基于DOM的解析,但是听说它需要大量内存,有什么建议吗?
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'
)
);
然后,你可以挑选出位的你想要保存在数据库中,然后离开你去!
这里有几个RSS解析库,包括Magpie和one in pear。
我会选择一个解析器,然后通过循环运行它并将数据提供给数据库。确保你计算出你想要运行脚本的频率,并考虑它是从cron运行的,还是只是偶尔加载的页面的一部分。
最好的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;包括以下命名空间:都柏林核心1.0,都柏林核心1.1,GeoRSS,iTunes RSS 1.0(大部分完整),媒体RSS 1.1.1,RSS 1.0内容模块,W3C WGS84 Basic Geo,XML 1.0,XHTML 1.0
SimplePie 1.2甚至有数据库缓存,所以它应该有你需要的一切来做你想做的。
如果你需要解析原始的XML文件,请尝试使用成XML
-Trystian
对于一个非常简单的一起黑客攻击的脚本,只是工作的端至端(解析RSS,插入DB) ;
我试过喜鹊。我将它指向http://chacha102.com/feed/,当用源代码查看时显示整个帖子,但使用喜鹊只能让我看到第一句话。 – 2009-01-22 22:36:31
看起来它有一些RSS 2.0饲料的问题:( – 2009-01-22 22:41:05