我正在嘗試使用幾個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