使用Python/urllib2处理rss重定向

Ale*_*lex 14 python redirect urllib2

调用urrlib2.urlopen从RSS源提取的文章的链接会导致以下错误:

urllib2.HTTPError:HTTP错误301:HTTP服务器返回重定向错误,导致无限循环.最后30x错误消息是:永久移动

根据文档,urllib2支持重定向.

在Java上,问题通过调用解决了

HttpURLConnection.setFollowRedirects(true);

我怎样才能用Python解决它?

UPDATE

我遇到问题的链接:

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

sle*_*erd 26

原来你需要启用Cookies.首先设置cookie后,页面会重定向到自身.因为默认情况下urllib2不处理cookie,所以你必须自己动手.

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()
Run Code Online (Sandbox Code Playgroud)


Lon*_*Rob 9

@ sleeplessnerd的解决方案没有任何问题,但这非常非常优雅:

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()
Run Code Online (Sandbox Code Playgroud)

事实上,如果你查看CookieJar()函数的内联文档,它或多或少会告诉你这样做:

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