0

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

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

谢谢 :)

4

2 回答 2

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 文件,然后您可以使用它做任何您需要的事情。

于 2012-05-25T13:24:31.487 回答
1

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

你有两个选择:

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

两者都可能是大量工作(尤其是如果您不熟悉这些东西),因为您必须根据 Web 应用程序的具体情况调整代码。像 mechanize 这样的库(正如其他人已经提到的)可以节省一些工作。

于 2012-05-25T13:40:45.537 回答