2012-03-29 11 views
14

ile yönlendirir: Belgelere göre Taşıma rss aşağıdaki hataya yol açmaktadır bir RSS beslemesi getirilen bir makale için bir bağlantıyı <code>urrlib2.urlopen</code> çağrılması Python/urllib2

urllib2.HTTPError: HTTP Error 301: The HTTP server returned a redirect error tha t would lead to an infinite loop. The last 30x error message was: Moved Permanently

, urllib2 yönlendirmeleri destekler.

Java On

sorun sadece ben Python ile bunu çözebilir nasıl

HttpURLConnection.setFollowRedirects(true);

arayarak çözüldü?

GÜNCELLEME

bağlantı ı sorunlar yaşıyorum:

http://feeds.nytimes.com/click.phdo?i=8cd5af579b320b0bfd695ddcc344d96c

+0

Yönlendirmeler varsayılan olarak etkindir. Hata mesajını tekrar okuyun. Bunun std-lib dosyasında bir hata olup olmadığını belirlemek için, kontrol etmek için URL'yi sağlamanız gerekir. Ayrıca, sunucunun gönderilen Kullanıcı Aracısı'na göre farklı şeyler döndürebileceğini unutmayın. – sleeplessnerd

+0

URL'yi ekledim. 5'den fazla yönlendirme var gibi görünüyor. Ancak Java, kullanıcı aracısı gibi ekstra bir şey olmadan bunlarla başa çıkıyor. – Alex

+0

Olası yinelenen sayfa [Python urllib2.urlopen sayfa var olsa bile 302 hatası döndürüyor] (http://stackoverflow.com/questions/4098702/python-urllib2-urlopen-returning-302-error-even-though-page-exists) – Krastanov

cevap

25

Eğer Çerezler etkinleştirmeniz gerekir çıkıyor. İlk olarak bir çerez ayarlandıktan sonra sayfa kendi kendine yeniden yönlendirilir. Urllib2 çerezleri varsayılan olarak ele almadığından, bunu kendiniz yapmanız gerekir.

import urllib2 
import urllib 
from cookielib import CookieJar 

cj = CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
p = opener.open("http://feeds.nytimes.com/click.phdo?i=8cd5af579b320b0bfd695ddcc344d96c") 

print p.read() 
9

@ sleeplessnerd çözümüyle hiç bir sorun yok, ama bu çok ama çok biraz daha şık:

import urllib2 
url = "http://stackoverflow.com/questions/9926023/handling-rss-redirects-with-python-urllib2" 
p = urllib2.build_opener(urllib2.HTTPCookieProcessor).open(url) 

print p.read() 

Aslında, CookieJar() fonksiyon için satır içi belgelerine bakarsanız, daha-veya -daha az sen şeyleri bu şekilde yapmak söyler:

You may not need to know about this class: try urllib2.build_opener(HTTPCookieProcessor).open(url)

+0

Bu şekilde uygulanırsa, sonraki istekler arasında paylaşılan cookiejar mı? (HTTPCookieProcessor, çerezler için tek bir önbellek veya her seferinde yeni bir çerez kabı kullanıyor mu?) – owenfi

İlgili konular