2013-03-20 87 views
0

我在谷歌搜索得到任何JS LIB它可以捕获任何网站或网址的形象。我开始知道phantomjs图书馆可以做到这一点。在这里,我有一个小的代码捕获并转换GitHub的主页PNG图像网页捕捉并保存到图像使用phantomjs LIB

如果任何人都熟悉phantomjs那么请告诉我这是什么线

var page = require('webpage').create(); 

在这里我可以给任何名字的含义而不是网页?

如果我需要捕捉任何网页的部分,那么我怎么能在这个库的帮助下做到这一点。任何人都可以指导我。

var page = require('webpage').create(); 
page.open('http://github.com/', function() { 
    page.render('github.png'); 
    phantom.exit(); 
}); 

https://github.com/ariya/phantomjs/wiki

感谢

回答

1

这里是抓取图像的简单phantomjs脚本:

var page = require('webpage').create(), 
system = require('system'), 
address, output, size; 


address = "http://google.com"; 
output = "your_image.png"; 
page.viewportSize = { width: 900, height: 600 }; 

page.open(address, function (status) { 
    if (status !== 'success') { 
     console.log('Unable to load the address!'); 
     phantom.exit(); 
    } else { 
     window.setTimeout(function() { 
      page.render(output); 
      console.log('done'); 
      phantom.exit(); 
     }, 10000); 
    } 
}) 

其中..

'地址' 是你的URL字符串。

'output'是您的文件名字符串。

又“宽” &“高度”是捕捉到什么部位的面积尺寸(如果你想整个页面评论了这一点)

要在命令行中运行这个保存以上为' script_name.js并启动幻像,使js文件成为第一个参数。

希望这有助于:)

1

你问行:

var page = require('webpage').create(); 

据我所知,该行做三件事情:它增加了一个模块require('webpage'),然后创建一个网页对象在PhantomJS .create()中,然后将该对象指定为var = page

名称“网页”告诉它要添加哪个模块。

http://phantomjs.org/api/webpage/

我太需要一种方法来使用page.render()捕捉只是一个网页的部分,但我没有看到一个简单的方法来做到这一点。通过ID选择一个页面元素并且只是根据它的大小渲染出该元素将会很好。他们应该为PhantomJS的下一个版本添加这个功能。

现在,我唯一的解决方法是向我的网址http://example.com/page.html#element添加一个锚点标记,以使页面滚动到我想要的元素,然后设置接近我需要的大小的宽度和高度。

我最近发现,我可以呈现之前有些操作页面,所以我想尝试使用这种技术来隐藏所有除了一个我想捕捉的其他元素。我还没有尝试过,但也许我会取得一些成功。 看到这个页面,看看他们如何使用querySelector()https://github.com/ariya/phantomjs/blob/master/examples/technews.js