我们正尝试自动从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库requests
或urllib2
下载内容时:
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启动下载?
答案 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