在这种情况下,您所说的“URL中未显式引用的文档”似乎就是所谓的“重定向”。基本上,服务器会告诉您必须从另一个URL获取文档。通常,python的urllib会自动遵循这些重定向,这样您就得到了正确的文件。(而且,正如其他人已经提到的那样,您可以检查响应的mime类型头,看看它是否是pdf)。在
但是,有问题的服务器在这里做了一些奇怪的事情。请求url,它会将您重定向到另一个url。你请求另一个网址,它会再次重定向你。。。到同一个网址!再说一次。。。再说一次。。。在某种程度上,urllib认为这已经足够了,并将停止跟踪重定向,以避免陷入无休止的循环中。在
那么,当你使用你的浏览器时,你怎么能得到pdf文件呢?因为显然,服务器只会在启用cookies的情况下提供pdf。(为什么?你必须问负责服务器的人…)如果你没有cookie,它会永远重定向你。在
(检查urllib2和cookielib模块以获得对cookies的支持,this tutorial可能会有所帮助)
至少,我认为这是导致问题的原因。我还没试过用饼干做。也可能是服务器不“希望”提供pdf,因为它检测到您没有使用“普通”浏览器(在这种情况下,您可能需要修改用户代理头),但这是一种奇怪的方式。所以我猜它是在某个地方使用“会话cookie”,如果你还没有,就继续尝试重定向。在