我正在使用PhantomJS 1.9.7来抓取网页。我需要将返回的页面内容发送到S3。我目前正在使用PhantomJS附带的文件系统模块保存到本地文件系统,并使用php脚本扫描目录并将文件发送到S3。我想完全绕过本地文件系统并将文件直接从PhantomJS发送到S3。我无法在PhantomJS中找到直接的方法。
我玩弄了使用child_process模块并将内容作为参数传递的想法,如下所示:
var execFile = require("child_process").execFile;
var page = require('webpage').create();
var content = page.content;
execFile('php', '[path/to/script.php, content]', null, function(err,stdout,stdin){
console.log("execFileSTDOUT:", JSON.stringify(stdout));
console.log("execFileSTDERR:", JSON.stringify(stderr));
});
会直接调用php脚本来完成上传。这将需要使用其他进程来调用CLI命令。我不习惯另一个异步进程在运行。我正在寻找的是一种从PhantomJS脚本直接发送到S3的方法,类似于文件系统模块对本地文件系统的作用。
如何实现这一点的任何想法将不胜感激。谢谢!
答案 0 :(得分:1)
您可以创建并打开另一个page
并将其指向您的S3服务。 Amazon S3具有REST API和SOAP API,REST似乎更容易。
对于SOAP,您必须手动构建请求。唯一的问题可能是错误的内容类型。虽然看起来好像是implemented,但我在文档中找不到引用。
您还可以在页面上下文中创建form
并发送way的文件。