2013-05-24 13 views
8

Próbuję pominąć kanały RSS, które nie zostały zmodyfikowane przy użyciu feedparsera i etagów. Zgodnie z wytycznymi zawartymi w dokumentacji: http://pythonhosted.org/feedparser/http-etag.htmlPython: Jak sprawdzić aktualizacje RSS za pomocą analizatora kanałów i etykiet

import feedparser 

d = feedparser.parse('http://www.wired.com/wiredscience/feed/') 
d2 = feedparser.parse('http://www.wired.com/wiredscience/feed/', etag=d.etag) 

print d2.status 

This Wyjścia:

200 

Nie powinien tego skryptu zwracają 304? Rozumiem, że gdy kanał RSS zostanie zaktualizowany, zmiany etag i jeśli się do nich pasują, powinienem otrzymać 304.

Jak to się stało, że nie otrzymałem oczekiwanego rezultatu?

+1

Nie można go odtworzyć na komputerze. Dostaję '304' używając feedparser-5.1.3 na Pythonie 2.6 – RedBaron

+0

Używam również python 2.6 i feedparser-5.1.3, na Debianie 6 – Marc

+0

Ah! Prawdopodobnie serwer proxy mojej organizacji wykonuje buforowanie, więc nie widzę problemu. – RedBaron

Odpowiedz

16

Podobno ten serwer jest skonfigurowany do sprawdzania nagłówka "If-Modified-Since". Musisz również podać czas ostatniej modyfikacji:

>>> d = feedparser.parse('http://www.wired.com/wiredscience/feed/') 
>>> feedparser.parse('http://www.wired.com/wiredscience/feed/', 
        etag=d.etag, modified=d.modified).status 
304 
>>> feedparser.parse('http://www.wired.com/wiredscience/feed/', 
        etag=d.etag).status 
200 
+0

Cóż, masz rację, mówiąc, że działa z nagłówkiem Modified. Ale w tym przypadku możesz całkowicie wyjąć etag i zwróci on 304. Chociaż działa tam całkiem sporo kanałów, które mają nagłówki etag i nie mają zmodyfikowanych nagłówków. Czy istnieje powód, dla którego Etagi nie działają? Czy może to być związane z moim serwerem, który wysyła żądania? – Marc

+2

Etagi i ostatnio zmodyfikowane nagłówki są dwiema niezależnymi technologiami buforowania. Niektóre serwery używają jednego z nich, inne mogą używać obu. Jeśli chcesz wspierać buforowanie dla wszystkich serwerów, powinieneś emulować standardowe zachowanie przeglądarek. Nowoczesne przeglądarki wysyłają zarówno etagi, jak i -modyfikowane - od nagłówków, więc powinieneś zrobić to samo. –

Powiązane problemy