我在没有 Node或Casper的Ubuntu 上使用PhantomJS 2.1.1。
fs.write('images/products/image.jpg', 'http://example.com/folder/someimage.jpg', 'w');
..虽然这会创建不是真正图像的1xx字节jpeg文件。有没有办法用PhantomJS下载任何类型的(JPEG,JPG,PNG)文件?
答案 0 :(得分:1)
我最终这样做了:
$stdout = shell_exec("phantomjs ./scrape-images.js '".$url);
$images = isset($stdout) ? explode(',', $stdout) : '';
..然后:
$command = 'wget '.urlencode($image).' --output-document="/path/to/image/directory/'.$filename.'" --quiet --background >/dev/null 2>&1';
shell_exec($command);
编辑:唯一的缺点是有些网站会检测到wget
并抛出404(即使我通过了一个使用者和参考者)因为它不是真正的用户,而Phantom将会离开它。
答案 1 :(得分:1)
一种更简单的方法,PhantomJS自行保存图像:
var page = require('webpage').create();
page.viewportSize = { width: 1280, height: 800 };
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36';
var url = "http://stackoverflow.com";
var selector = "#hlogo a";
page.open(url, function(){
setTimeout(function(){
var clipRect = page.evaluate(function (selector) {
return document.querySelector(selector).getBoundingClientRect();
}, selector);
page.clipRect = {
top: clipRect.top,
left: clipRect.left,
width: clipRect.width,
height: clipRect.height
};
page.render('image.jpg');
phantom.exit();
}, 1000);
});