Phantomjs 在CasperJS中捕获图像

Phantomjs 在CasperJS中捕获图像,phantomjs,casperjs,Phantomjs,Casperjs,我目前正在使用CasperJS(位于无头浏览器PhantomJS之上)进行网站抓取,我想从网站下载图片 有两种方法可以实现这一点,这两种方法都有很好的文档记录,但都不适合我的目的 我可以使用casper.capture()对网站的一部分进行截图,但图像被显示在其前面的HTML元素遮挡,因此这不是一个选项-我需要图像的原始源 当然,总是有casper.download(),这确实有效,但这只有在我使用--web security=no运行casperjs时才有效,考虑到我正在删除一个不是我自己的站

我目前正在使用CasperJS(位于无头浏览器PhantomJS之上)进行网站抓取,我想从网站下载图片

有两种方法可以实现这一点,这两种方法都有很好的文档记录,但都不适合我的目的

我可以使用
casper.capture()
对网站的一部分进行截图,但图像被显示在其前面的HTML元素遮挡,因此这不是一个选项-我需要图像的原始源

当然,总是有
casper.download()
,这确实有效,但这只有在我使用
--web security=no
运行casperjs时才有效,考虑到我正在删除一个不是我自己的站点,这会带来安全风险

它还显示
casper.on(“resource.received”),fuction(resource){}
不适合我的需要,因为它只给我图像元数据,而不是图像本身

我已经尝试过使用缓存系统,但对我来说不起作用。每当我尝试访问cache.cachedResources[index].getContents()时,我的casperjs都会由于未知原因崩溃。使用代理也不是一个可行的解决方案

如果有人知道一种在不禁用网络安全的情况下下载原始图像的方法,那将非常感谢。请记住,我不一定需要将其保存到文件中,如果我可以访问CasperJS中的字节内容,那么也可以


谢谢大家!

您可以将图像绘制到隐藏画布并获取其DataURL,但PhantomJS会被破坏,因为图像没有被压缩。我不知道它是否在版本2中被修复。在页面上下文中,您可以这样做:我已经尝试过了,但似乎也不起作用。这可能是因为所有图像都托管在网站本身以外的另一个域上吗?如果您使用
--web security=no
,那么这应该不是问题。由于您已经尝试了某些操作,请注册到
资源.error
页面.error
远程.message
casper.page.onResourceTimeout
事件()。可能有错误。你可以在隐藏的画布上绘制一个图像并获取其数据URL,但是PhantomJS被破坏了,因为图像没有被压缩。我不知道它是否在版本2中被修复。在页面上下文中,您可以这样做:我已经尝试过了,但似乎也不起作用。这可能是因为所有图像都托管在网站本身以外的另一个域上吗?如果您使用
--web security=no
,那么这应该不是问题。由于您已经尝试了某些操作,请注册到
资源.error
页面.error
远程.message
casper.page.onResourceTimeout
事件()。也许有错误。