2015-03-02 87 views
0

在网络抓取练习中,我需要单击链接,让它们呈现内容(如果是html)并以其他方式下载它。我如何用幻影/ slimerjs上的casperjs或其他工具完成此任务?根据casperjs中的mimetype下载文件

据我所知,幻影/ slimerjs缺乏支持下载的API。 casperjs有一个下载API,但我无法看到如何检查MIME类型,并让HTML呈现下载其他内容。

+0

@tripleee我编辑了我的问题,包括我的研究。我的问题是独立的,据我所知,它有一个复杂的问题,在整个Web上的常见例子中没有提到。我认为它不值得投反对票。 – 2015-03-02 11:19:02

+0

为了记录,我不是downvoter。我没有仔细研究过这个问题,但是不允许浏览器对点击链接采取默认行动吗? – tripleee 2015-03-02 11:47:41

+0

@tripleee谢谢。我正在使用的上述工具没有针对非Web内容的默认操作,例如pdf,应用程序二进制文件等。 – 2015-03-02 12:05:38

回答

2

在这两种PhantomJS和SlimerJS可以注册监听到的每个接收到的响应:

page.onResourceReceived = function(response) { 
... 
} 

然而,只有在SlimerJS是response.body定义。通过使用这个你可以保存文件。 this blog post有一个完整的例子。 (如该示例所示,您必须设置page.captureContent来覆盖您想要的数据文件。)

在PhantomJS 1.9.x中没有办法做到这一点(我相信PhantomJS 2.x仍然存在相同的问题,但我还没有亲自证实过)。

你的问题的另一部分是关于决定什么保存基于MIME类型。 full list of available fields显示您可以使用response.contentType

+0

非常好,谢谢你的回答和博客文章链接。一旦我回到它,我会测试它。 – 2015-03-11 20:59:10