2010-02-11 13 views
35

Szukam dobrej biblioteki w Pythonie, która pomoże mi parsować kanały RSS. Czy ktoś użył urządzenia do żywienia? Jakakolwiek informacja zwrotna?Biblioteka analizatorów kanałów RSS w Pythonie

+5

Pobieranie i wypróbowywanie podajnika potrwa 5 minut. –

+3

Pobieranie i wypróbowywanie programu Feedparser może zająć tylko 5 minut, ale jego użycie zajmie dużo więcej czasu, aby uzyskać opinię użyteczną i wiarygodną, ​​tak jak inne osoby na SO. 5 minut użytkowania udowodniłoby tylko, że można go zainstalować i obsługiwać główny przypadek użycia. – Trindaz

Odpowiedz

49

Korzystanie feedparser jest o wiele lepszym rozwiązaniem niż toczenia własne z minidom lub BeautifulSoup.

  • Normalizuje różnice między wszystkimi wersjami RSS i Atom, dzięki czemu nie trzeba mieć innego kodu dla każdego typu.
  • Dobrze wykrywa różne formaty dat i inne odmiany w kanałach.
  • Automatycznie śledzi przekierowania HTTP.
  • Umożliwia sanityzację treści HTML.
  • Obsługuje nagłówki ETag i Last-Modified, dzięki czemu można sprawdzić, czy kanał zmienił się po prostu pobierając nagłówek HTTP, a nie cały kanał.
  • Posiada obsługę uwierzytelnionych kanałów.
  • Posiada obsługę proxy HTTP.

Jak wspomnieli inni, po prostu spróbuj. To jest jak 2 linie kodu do analizowania kanału. Moją jedyną skargą jest to, że po prostu używa słowników jako swojego modelu danych i niektóre atrybuty mogą nie być dostępne w słowniku, jeśli nie były w kanale, więc musisz sprawdzić to w swoim kodzie. Jednak w dokumentacji jest bardzo jasne, które atrybuty będą zawsze w słowniku, a które mogą nie być dostępne.

Wreszcie, mogę ręczyć za to, ponieważ napisałem aplikację, która go używa. Zobacz tutaj: http://www.feednotifier.com/

+0

Dzięki za odpowiedź! .. Tak, to jest tak fajna i dobrze zdefiniowana dokumentacja! .. łatwy w użyciu. !! Twój informator jest również interesujący! –

+0

Czy znasz bibliotekę, która pobiera dane wyjściowe do modułu filtrującego i może zamienić je w kanał? –

+0

Obecnie pojawia się problem, który mnie nurtuje: wydaje się, że feedparser kończy się niepowodzeniem na elementach "media:" w kanałach Flickr. To jest naprawdę denerwujące. Właśnie zgłosiłem problem, miejmy nadzieję, że wkrótce otrzymam obejście problemu. – dguaraglia

1

http://www.feedparser.org/

pierwsze trafienie na G.

+0

Cóż, wspomniał o tym w pytaniu ... –

+0

W każdym razie, czy macie jakiś pomysł na temat innego niż feedpurser, który jest łatwy w użyciu? –

+0

@ rahman.bd nie, urządzenie do żywienia jest zbyt dobre, nikt nie przejmuje się alternatywą. –

1

W odpowiedzi na swojej obserwacji. Możesz użyć BeautifulSoup - ale feedparser jest znacznie lepiej przygotowany do przekazywania RSS.

Nie snark - ale czy czytałeś feedparsers documentation? Nie wiem, jak to może być prostsze w użyciu.

+2

Dla dobra innych: Feedparser.org został zdjęty przez Marka Pilgrima. Będę go udostępniał jako część następnej wersji. –

0

Jeśli chcesz alternatywy, wypróbuj xml.dom.minidom. Podobnie jak "Django to Python", "RSS to XML".

+0

Nie ma powodu, aby przyjmować takie podejście, gdy istnieje generator kanałów. Musiałbyś poradzić sobie z różnicami między RSS i Atom, źle sformułowanymi kanałami, różnymi formatami datownika/znacznika czasowego itp. – FogleBird

10

Feedparser jest bardzo wydajny, konfigurowalny i prosty w obsłudze. Bardzo przyjazna krzywa uczenia się, jeśli w ogóle.

Przykład

Programowo określić, ile ma odpowiedzi na Twoje pytanie:

easy_install feedparser 
python -c 'import feedparser; print len(feedparser.parse("http://bit.ly/c785aj")["entries"])' 
+0

Możesz użyć .entries zamiast ["entries"], ponieważ feedparser używa dostosowanego słownika, który umożliwia dostęp do atrybutów. Łatwiej pisać i czytać. – FogleBird

+0

Dzięki za przykład. @ FogleBird Dzięki za wyjaśnienie. –

1

Wiem, że to bardzo stary temat, ale za to, co jest warte, korzystałem z programu feedparser (Universal Parser) wersji 5.1.3 i ostatnio zamieniłem na speedparser (0.1.8) ze względu na wydajność. Ma prawie te same interfejsy, ale działa szybciej.

Używam go dla amatorskiej aplikacji Python-for-Android i speedparser działa około 5 razy szybciej na moich kanałach.

Powiązane problemy