2013-03-20 89 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