A. 怎麼在nodejs裡面操作DOM
如果抄你想建立的DOM可以使用jsdom 。襲
還有CHEERIO ,它具有jQuery的界面,比jsdom其快了很多。
你可能會想看看htmlparser2 ,這是一個流分析器,並根據它的基準,這似乎是比別人快,也沒有DOM默認。它也可以產生DOM ,因為它也捆綁了創建一個DOM的處理程序。這是一種用於後面CHEERIO解析器。
如果你要解析的HTML抓取,你可以使用YQL 。這里是它的一個節點模塊。 YQL我覺得這是最好的解決辦法,如果你的HTML是從一個靜態的網站,因為你是靠服務,而不是你自己的代碼和處理能力。但要注意,如果該頁面是由網站的robot.txt的禁止是行不通的, YQL將無法使用它。
如果你想抓取的網站是動態的,那麼你應該使用一個無頭的瀏覽器一樣phantomjs 。也看看casperjs ,如果你正在考慮phantomjs 。你可以從節點SpookyJS控制casperjs 。
除了phantomjs有zombiejs 。不同,不能嵌入的NodeJS phantomjs , zombiejs僅僅是一個節點的模塊。
B. 如何用nodejs去做網頁截圖
很多情況下,我們都需要在電腦上做一些截圖的操作。有哪些常用的截圖方法呢?
1、按鍵盤上的print screen 鍵:這個方法很麻煩,估計很少人用吧!
如果有如下需求:
1、截取一個網頁,也就是一個滾動窗口的所有內容;
2、需要重復截取屏幕上的某一個固定區域,比如一個窗口截圖一次後,做了一些修改,要重復截取一次,標識改變的地方;
3、在截圖上畫矩形框、氣泡框、箭頭,加漢字等
這樣的需求,QQ截圖雖然可以實現,但是那就太麻煩了,所以今天給大家推薦一款快捷好用的截圖軟體,叫做PicPick
軟體安裝包不大,開啟後佔用約25MB內存,所以即使設定為開機啟動,也不會造成太大的性能影響。同時,這款軟體原生支持全中文,並且對於個人及家庭用戶是免費的,也不用考慮是否需要漢化或者破解之類的問題。
工具/原料
PicPick
windows
軟體主界面介紹
1首先需要下載此軟體,截止2013-11-06,最新的版本應該是3.2.8。安裝過程中,會要求安裝另一個系統優化的軟體,大家直接拒絕就可以了
2安裝完畢後,此軟體界面如圖,主要的功能也都體現在主界面上了。
右邊的實用工具就不多介紹了,一看就明白,支持「屏幕取色」、「調色」、「放大鏡」、「標尺」、「坐標軸」、「量角器」和「白板」功能。絕對是設計師和PPTer的好幫手。
主界面左下方的截圖工具才是重點,介紹如下:
1、全屏:當前整個屏幕
2、窗口控制項:使用這個截圖功能的時候,會出現一個紅框,單擊滑鼠,紅框范圍內的窗口就會被截取了
3、滾動窗口:比如一個很長的網頁,支持一次性截取為圖片。雖然很多瀏覽器都支持,但是這個軟體還支持比如IE之類的瀏覽器,很實用。
4、矩形區域:最常用的,截取一個矩形框中的內容
5、固定區域:截取某一個固定區域
6、任意形狀:比如截圖一個圓形啊、心形啊之類的都可以
7、重復上次截取:這才是真正的最實用的功能,可以把上一次截取的區域再截取一次,超級好用
截圖步驟
1PicPick軟體截圖,有如下的方法:
1、主界面截圖:就是在如下界面上,選擇相應的功能
2、在工具欄托盤中,單擊PicPick的圖標,選擇「截取屏幕」
3、使用快捷鍵,具體的鍵位設定請參見軟體的設置界面,圖片中是我最常用的功能和自定義的快捷鍵
4、在編輯圖片的窗口,左上角的文件菜單中,選擇截取屏幕
圖片修改
1截圖之後會自動打開圖片編輯的窗口,如圖,最常用的文字、矩形框等工具都在界面最上方,使用方法也很簡單,單擊相應的圖形即可
其他設置
1建議勾選該軟體的如下設置,會讓軟體更好用
2建議讓軟體開機自動啟動即可,因為不佔太多內存,功能也足夠強大
C. nodejs調用phantomjs時,phantomjs.path為null,應該要怎麼處理
官方案例 :
Running via node
The package exports a path string that contains the path to the
phantomjs binary/executable.
Below is an example of using this package via node.
var path = require('path')
var childProcess = require('child_process')
var phantomjs = require('phantomjs-prebuilt')
var binPath = phantomjs.path
var childArgs = [
path.join(__dirname, 'phantomjs-script.js'),
'some other argument (passed to phantomjs script)'
]
childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
// handle results
})
或者。。。
to see : https://github.com/Medium/phantomjs
去看源碼18行 => https://github.com/Medium/phantomjs/blob/master/lib/phantomjs.js#L18
/**
* Where the phantom binary can be found.
* @type {string}
*/
try {
var location = require('./location')
exports.path = path.resolve(__dirname, location.location)
exports.platform = location.platform
exports.arch = location.arch
} catch(e) {
// Must be running inside install script.
exports.path = null
}
你可以把 catch 的 e 打出來看看是什麼錯誤
D. 怎麼使用node.js進行快速截圖
使用nodejs進行截圖,推薦使用phantomjs實現。phantomjs是一個無頭瀏覽器,能夠實現截屏,網路專請求監測,自動化測屬試等功能。具體所有例子可以在phantomjs官網找到,下面給一個官網截屏的實例:
//index.js
varpage=require('webpage').create();
page.open('
,function(){
page.render('github.png');
phantom.exit();
});
//命令行調用
phantomjsindex.js
通常也會用casperjs(webkit)來實現截圖,它有更好用的api封裝方便實現各種操作。在Gecko內核下則使用slimerjs實現。
不過google官方團隊也出了針對chrome的無頭瀏覽器工具puppeteer,現在版本是0.9.0,這款工具是單獨針對Chrome瀏覽實現的,提供了強大但是簡單實用的api。
以上關鍵詞 phantomjs、casperjs、slimerjs及puppeteer均可在gitHub上找到,且可以自行下載包查看示例。
E. 以nodejs為後台的話,能將頁面文字轉化為圖片嗎
可以看看 node-canvas模塊,用canvas將文字轉換為圖片輸出,可以實現驗證碼等功能。
如果是網頁轉圖片的話,可以看看phantomjs