使用带有下载请求URL的Python下载文件

时间:2017-11-15 21:47:36

标签: python

我们正尝试自动从Facebook广告下载自动生成的报告。当报告准备下载时,我们会收到一封包含正文中下载链接的电子邮件。我们解析消息的正文并获取此(编辑)url以下载csv文件:

https://www.facebook.com/ads/manage/download_report.php?act=<account_id>&report_run_id=<run_id>&format=csv&source=email_v2

如果我将此文件放入浏览器地址栏,则会开始下载文件,但是当我尝试使用python库requestsurllib2下载内容时:

import requests
url = 'https://www.facebook.com/ads/manage/download_report.php?act=\
       <account_id>&report_run_id=<run_id>&format=csv&source=email_v2'
r = requests.get(url, allow_redirects=True)
open('test.txt', 'a+').write(r.content)

结果文件只是HTML,不包含我所期望的任何数据,因此很明显没有资源附加到此文件路径。

如何使用python启动下载?

1 个答案:

答案 0 :(得分:0)

您需要向Facebook进行身份验证并使用这些Cookie下载此文件。这并不难,但值得再提一个问题。

您正在使用$(document).ready(function() { $('select').material_select(); }); 内置功能错误 你必须写下这样的下载文件:

open

使用多个文件时,如果未删除文件对象,则会引发import requests url = 'https://www.facebook.com/ads/manage/download_report.php?act=\ <account_id>&report_run_id=<run_id>&format=csv&source=email_v2' r = requests.get(url, allow_redirects=True) f = open('test.txt', 'a+') f.write(r.content) f.close() 异常 引用Python documentation

  

在处理文件对象时,最好使用IOError: [Errno 24] Too many open files关键字。优点是文件在套件完成后正确关闭,即使在某个时刻引发了异常。使用with也比编写等效的try-finally块

短得多

示例:

with