2009-01-22 10 views
10

Próbuję wziąć kilka kanałów RSS i umieścić ich zawartość w bazie danych MySQL za pomocą PHP. Po zapisaniu tej zawartości wyświetlę ją na mojej stronie, a także połączę zawartość w jeden kanał RSS. (Prawdopodobnie po filtrowaniu)Jaki jest najlepszy sposób na uzyskanie kanałów RSS w bazie danych MySQL

Nie zajmowałem się wcześniej RSS, więc zastanawiam się, jaki jest najlepszy framework/metoda. Czytałem o parsowaniu opartym na DOM, ale słyszałem, że zajmuje dużo pamięci, jakieś sugestie?

Odpowiedz

9

Magpie to rozsądny parser RSS dla PHP. Łatwy w użyciu:

require('rss_fetch.inc'); 
$rss = fetch_rss($url); 

element jak to na przykład:

<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> 

Lepiej być włączone do tablicy tak:

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

Następnie można po prostu wybrać się bity, które chcesz zapisać w DB i odejdziesz!

+0

Próbowałem Sroka. Skierowałem go na http://chacha102.com/feed/, który po obejrzeniu ze źródłem pokazuje cały post, ale używając Sroka dostaje mnie tylko o pierwszym zdaniu. –

+0

Wygląda na to, że ma problemy z niektórymi kanałami RSS 2.0 :( –

+0

Używałem go głównie w kanałach Atom z Czytnika Google, nie zdawałem sobie sprawy, że ma on niedobór RSS 2.0 –

0

Istnieje kilka bibliotek parsowania RSS, w tym Magpie i one in pear.

Chciałbym wybrać parser, a następnie uruchomić go przez pętlę z danymi, aby wprowadzić je do bazy danych. Sprawdź, jak często chcesz uruchamiać skrypt, i zastanów się, czy działa on z crona, czy części strony, która jest rzadko wczytywana.

7

Najlepszym parserem PHP jest SimplePie, IMHO. Używam go od lat. Świetnie jest przechwytywać i analizować następujące elementy: 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; w tym następujące przestrzenie nazw: Dublin Core 1.0, Dublin Core 1.1, GeoRSS, iTunes RSS 1.0 (w większości kompletne), Media RSS 1.1.1, RSS 1.0 Content Module, W3C WGS84 Basic Geo, XML 1.0, XHTML 1.0

SimplePie 1.2 nawet ma buforowanie bazy danych, więc powinien mieć wszystko, czego potrzebujesz, aby robić to, co chcesz.

A jeśli potrzebujesz do analizowania surowych plików XML, użyj XMLize

-Trystian

+1

Znalazłem [ten stary dokument] (http://simplepie.org/wiki/faq/how_do_i_do_database_caching) ogłaszając, że obsługa buforowania bazy danych będzie dostępna w wersji 1.2, ale obecna wersja (1.3.1) zwraca dziwne błędy, gdy używam składni MySQL. – Pieter