В этом случае то, что вы называете «документом, на который явно не ссылаются в URL», представляется так называемым «перенаправлением». По сути, сервер сообщает вам, что вы должны получить документ по другому URL. Как правило, urllib python будет автоматически следовать этим перенаправлениям, так что вы получите правильный файл. (и - как уже упоминали другие - вы можете проверить заголовок MIME-типа ответа, чтобы увидеть, является ли это PDF).
Однако рассматриваемый сервер делает здесь что-то странное. Вы запрашиваете URL, и он перенаправляет вас на другой URL. Вы запрашиваете другой URL, и он снова перенаправляет вас ... на тот же URL! И снова ... И снова ... В какой-то момент urllib решает, что этого уже достаточно, и перестанет следовать перенаправлению, чтобы избежать попадания в бесконечный цикл.
Так почему же вы можете получить PDF, когда используете браузер? Потому что, очевидно, сервер будет обслуживать PDF, только если у вас включены куки. (почему? вы должны спросить людей, ответственных за сервер ...) Если у вас нет куки, он просто будет перенаправлять вас вечно.
(проверьте urllib2 и cookielib , чтобы получить поддержку для файлов cookie, это руководство может помочь)
По крайней мере, именно это, я думаю, и является причиной проблемы. На самом деле я еще не пробовал делать это с куки. Может также случиться так, что сервер не «хочет» обслуживать pdf, потому что он обнаруживает, что вы не используете «нормальный» браузер (в этом случае вам, вероятно, придется возиться с заголовком User-Agent), но это было бы странным способом сделать это. Поэтому я предполагаю, что он где-то использует «сессионный cookie», а в случае, если у вас его еще нет, продолжает пытаться перенаправить.