0

在网络抓取练习中,我需要单击链接,如果是 html,则让它们呈现内容,否则下载。如何在 phantom/slimerjs 之上使用 casperjs 或其他一些工具来完成此任务?

据我了解,phantom/slimerjs 缺乏支持下载的 API。casperjs 有一个下载 API,但我看不到如何检查 mime 类型并在下载其他内容时让 html 呈现。

4

1 回答 1

2

在 PhantomJS 和 SlimerJS 中,你可以为每个收到的响应注册一个监听器:

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

然而,只有在 SlimerJS 中才定义了 response.body。通过使用它,您可以保存文件。这篇博文中有一个完整的例子。(如该示例所示,您必须设置page.captureContent为覆盖您想要数据的文件。)

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

您问题的另一部分是关于根据 mime 类型决定要保存的内容。可用字段的完整列表显示您可以使用response.contentType.

于 2015-03-11T15:27:45.370 回答