如何使用python下载推送到浏览器的文件?

时间:2013-04-11 17:17:04

标签: python download scrapy

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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