3

我编写了一个脚本,可以单击可以下载 mp3 文件的链接。我面临的问题是当脚本模拟点击该链接时,会弹出一个下载对话框,如下所示:
下载对话框

现在,我想将此文件保存到我选择的某个路径并自动化整个过程。我对如何处理这个对话框一无所知。

4

3 回答 3

0

Firefox 会生成一个包含内容的临时“downloadfile.extension.part”文件。只需简单地将文件重命名为 ex。myfile.csv.part > myfile.csv

在本地,如果在 Mac 上工作,您应该在 linux /temp/ 文件夹的下载目录中找到 .part 文件

不是最优雅的解决方案,但应该可以解决问题

于 2016-09-27T12:52:30.297 回答
0

这是改编自此博客文章的脚本,用于下载文件。

在 SlimerJS 中,可以在 onResourceReceived 处理程序中使用 response.body。但是,为了防止使用过多的内存,默认情况下它不会得到任何东西。您必须先设置 page.captureContent 才能说出您想要的内容。您将一组正则表达式分配给 page.captureContent 以说明要接收哪些文件。正则表达式应用于 mime 类型。在下面的示例代码中,我使用 /.*/ 来表示“获取一切”。使用 [/^image/.+$/] 应该只是获取图像等。

var fs=require('fs');
var page = require('webpage').create();

fs.makeTree('contents');

page.captureContent = [ /.*/ ];

page.onResourceReceived = function(response) {

    if(response.stage!="end" || !response.bodySize)
    {
        return;
    }

    var matches = response.url.match(/[/]([^/]+)$/);
    var fname = "contents/"+matches[1];

    console.log("Saving "+response.bodySize+" bytes to "+fname);
    fs.write(fname,response.body);

    phantom.exit();
};

page.onResourceRequested = function(requestData, networkRequest) {
    //console.log('Request (#' + requestData.id + '): ' + JSON.stringify(requestData));
};

page.open("http://....mp3", function(){

});
于 2016-02-16T13:57:02.903 回答
0

您无法控制对话框。SlimerJS 没有用于此操作的 API。

于 2016-02-17T08:03:01.100 回答