urllib.urlopen虽然mechanize有效,但不适用于此url

2024-09-19 23:39:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我下面的代码不适用于在纽约时报的网址,这是文章。请尝试将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;

请告知。 谢谢。在


Tags: 代码comhttpurlwww文章interactivehow
2条回答

我猜“不起作用”是指它没有给你预期的内容。当我使用urllib访问该URL时,得到的结果是空的,所以这很可能是纽约时报“付费墙”的另一个方面

我想纽约时报会用cookies验证你的请求。如果请求不是web浏览器的普通请求,则服务器返回Location header。它会让你的请求丢失。在

解决办法很简单。像这样使用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

相关问题 更多 >