我下面的代码不适用于作为文章的nytimes中的URL。请尝试将URL变量更改为其他变量,您会发现它起作用。这是为什么?

#url = "http://www.nytimes.com";
url = "http://www.nytimes.com/interactive/2014/07/07/upshot/how-england-italy-and-germany-are-dominating-the-world-cup.html"
htmlfile = urllib.urlopen(url);
htmltext = htmlfile.read();
print htmltext;


请指教。
谢谢。

最佳答案

我认为NYT会使用Cookie验证您的请求。如果该请求不是Web浏览器的普通请求,则服务器返回Location标头。它使您的请求丢失。

解决方案很简单。像这样使用cookiejar:

import cookielib, urllib2

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

url = "http://www.nytimes.com/interactive/2014/07/07/upshot/how-england-italy-and-germany-are-dominating-the-world-cup.html"
htmlfile = opener.open(url)
htmltext = htmlfile.read();

print htmltext

10-02 08:30