2012-05-25 73 views
0

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

如果是的话,你能解释我如何,因为我以前从未使用过它们。 ?

感谢的:)

+0

也许这样? http://stackoverflow.com/questions/8734876/urllib2-with-cookies –

+0

或者这个http://stackoverflow.com/questions/7162850/pass-session-cookies-in-http-header-with-python- urllib2 –

回答

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文件,然后你可以做任何你需要它。

+0

okey,但数据变量包含pdf,对不对? – Sizixe

+0

我之前没有使用pdfs的机械化,所以我不太确定,但数据应该是pdf。您可能不得不使用其他的pdf库来实际获取任何有用的信息。 – murgatroid99

+0

okey谢谢,我会试试看 – Sizixe

1

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

你有两个选择:

  • 日志中通过浏览器,工艺使用Python
  • 做任何Python的东西(从最初的请求开始在后续请求中的cookie和假冒浏览器,登录,文件检索)

这两者都可能是相当数量的工作(特别是如果您是新手),因为您必须根据Web应用程序的具体情况调整代码。像机械化这样的图书馆(正如其他人所提到的)可以节省一些工作。

相关问题