使用python urllib下载受保护的文件

时间:2012-05-25 13:17:09

标签: python download urllib

我正在尝试下载位于http://elwatan.com/pdf/telecharger.php?dir=JOURNAL&file=20120524.pdf的PDF文件,但是,此pdf文件需要在下载之前登录。我能够登录,但是服务器将我重定向到主页http://elwatan.com,当我再次尝试获取pdf的url时,我无法下载它,因为它似乎我没有登录!我认为我需要使用cookies,对吧?

如果是的话,请你解释一下如何,因为我之前从未使用过它们。 ?

谢谢:)

2 个答案:

答案 0 :(得分:2)

mechanize库对于这种情况非常有用。它模拟浏览器,包括填写表单(如登录表单)和保持cookie等状态。有了它,您可以登录该站点,然后导航到pdf文件。您可以使用类似下面的代码:

br = mechanize.Browser()
br.open(login_url)
#code to log in with br
data = br.open(pdf_url).get_data()

然后您必须将数据解析为pdf文件,然后您可以随心所欲地执行任何操作。

答案 1 :(得分:1)

使用该Web应用程序时,会为您生成“会话”。会话详细信息存储在cookie中的客户端中。您的客户端使用每个HTTP请求发送cookie内容。通过这样做,Web应用程序知道您的HTTP请求对应于同一会话。最初,您只是该会话中的未知用户。登录后,Web应用程序知道该会话中的请求来自授权用户。

您有两种选择:

  • 通过浏览器登录,制作cookie并使用Python
  • 在随后的请求中伪造浏览器
  • 用Python做任何事情(从初始请求开始,登录,文档检索)

两者都可能是相当多的工作(特别是如果你不熟悉这些东西),因为你必须根据Web应用程序的细节调整代码。像机械化这样的库(正如其他人已经提到的那样)可以节省一些工作。