我一直在努力解决这个问题。
我正在尝试下载由Google Adwords“下载报告”按钮生成的CSV文件。我可以点击链接,然后在后台查看资源。问题是,为了下载它,casperJS / phantomJS需要一个文件的URL ...但CSV是在现场生成的,并且与我所在的页面具有相同的URL(在该链接之后只会引导您到达主页,而不是CSV文件,所以casperJS无法下载它。)
有没有办法在没有URL的情况下保存该资源?
我发现了这个解决方法:downloading a file that comes as an attachment in a POST request response in PhantomJs
但遗憾的是,Google Adwords报告按钮没有我可以参考的形式。
答案 0 :(得分:1)
我使用chrome开发人员工具进行了简单的请求分析: 下载请求(对我来说)到以下URL:
Request URL:https://adwords.google.com/reports/advanced/ReportDownload?authuser=0
FORMDATA:
__rds:{{censored}}
__rrd:{{censored}}
__u:{{censored}}
__c:{{censored}}
__rfl:8,9,10
token:{{censored}}:{{censored}}
请求标题:
:authority:adwords.google.com
:method:POST
:path:/reports/advanced/ReportDownload?authuser=0
:scheme:https
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/ *;q=0.8
accept-encoding:gzip, deflate
accept-language:en-US,en;q=0.8,de-DE;q=0.6,de;q=0.4,hr;q=0.2,sr;q=0.2
cache-control:max-age=0
content-length:501
content-type:application/x-www-form-urlencoded
cookie: {{censored}}
dnt:1
origin:https://adwords.google.com
referer:https://adwords.google.com/reports/advanced/AdvancedReporting?__c={{censored}}&__u={{censored}}&authuser=0&__o=cues
upgrade-insecure-requests:1
user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
x-client-data:{{censored}}
我已将{{censored}}标记替换为我可能已删除的数据。