问题描述
在指向从 RSS 提要获取的文章的链接上调用 urrlib2.urlopen
会导致以下错误:
Calling urrlib2.urlopen
on a link to an article fetched from an RSS feed leads to the following error:
urllib2.HTTPError:HTTP 错误 301:HTTP 服务器返回重定向会导致无限循环的错误.最后的 30x 错误消息是:永久移动
根据文档,urllib2 支持重定向.
According to the documentation, urllib2 supports redirects.
在 Java 上,只需调用即可解决问题
On Java the problem was solved by just calling
HttpURLConnection.setFollowRedirects(true);
如何用 Python 解决?
How can I solve it with Python?
更新
我遇到问题的链接:
http://feeds.nytimes.com/click.phdo?i=8cd5af579b320b0bfd3469/a>
http://feeds.nytimes.com/click.phdo?i=8cd5af579b320b0bfd695ddcc344d96c
推荐答案
事实证明您需要启用 Cookie.页面在首先设置 cookie 后重定向到自身.因为 urllib2 默认不处理 cookie,所以你必须自己做.
Turns out you need to enable Cookies. The page redirects to itself after setting a cookie first. Because urllib2 does not handle cookies by default you have to do it yourself.
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()
这篇关于使用 Python/urllib2 处理 rss 重定向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!