3

我想使用 python 下载一个 zip 文件。

使用这种类型的 url, http ://server.com/file.zip,使用 urllib2.urlopen 并将其写入本地文件非常简单。

但就我而言,我有这种类型的网址: http://server.com/customer/somedata/download?id=121&m=zip,在表单验证后启动下载。

准确地说,在我的情况下,我想将它部署在 heroku 上,所以我不能使用用 C++ 构建的 spynner。此下载是在使用 scrapy 进行抓取后启动的。

从浏览器下载效果很好,我得到了一个很好的 zip 文件及其名称。使用 python 我只是得到 html 和 header 数据......

有没有办法从 python 中的这种类型的 url 获取文件?

4

2 回答 2

1

本网站提供 JavaScript,然后调用下载。您别无选择,只能:a)在模拟的浏览器环境中评估 JavaScript 或 b)手动解析 JS 的功能,然后在 python 中重新实现。例如,提取 URL 和下载密钥的字符串,可能调用 AJAX 请求,最后下载文件

我一般推荐Mechanize用于与网页相关的自动化,但它也不能处理 JavaScript,所以我想如果你想选择计划 b),你可以坚持使用 Scrapy。

于 2013-04-11T17:22:27.717 回答
0

当您在浏览器中进行下载时,打开开发者控制台的网络选项卡并记录什么 HTTP 方法(可能是 POST)、POST 参数、cookie 以及所有其他属于验证的内容;然后使用库来复制它。

于 2013-04-11T17:24:29.677 回答