摘要:最近因為一個活兒所以要完成抓取網頁截圖這個需求,我研究了幾個工具,就向大家分享一下我們的方案了。第二個方案方案分析理由是支持各個平臺的,而且用起來很方便。
最近因為一個活兒所以要完成抓取網頁截圖這個需求,我研究了幾個工具,就向大家分享一下我們的方案了。假如有什么錯誤和更好的提議,歡迎拍磚。 因為支付寶已經做過類似的功能,所以我就咨詢了@天材他們的方案,感謝他提供了寶貴的資料作參考。
第一個方案:(直接用命令截圖,再用ImageMagic裁剪)
偽代碼如下:
?(1)截圖指令[ " + "xvfb-run.sh --auto-servernum CutyCapt --delay=" + delay+ " --max-wait=" + maxWait + " --url=" + url + " --out=" + filePath + "]
(2)截取指定圖片指定大小指令[" + "convertcrop " + cutWidth + "x" + cutHight + "+" + cutStartX + "+" + cutStartY + " " + filePath + " " + filePath + "]
但我覺得第一個方案似乎有點別扭,而且截圖的命令也不知道能不能支持多個平臺(因為公司只配置了一臺筆記本給我,win系統的),所以我就去探討另外一個方案。
第二個方案:(PhantomJs + NodeJs + ImageMagick)
方案分析:
理由?:
PhantomJs是支持各個平臺的,而且用起來很方便。細心的同學可以看到它安裝的腳本,是會根據不同平臺下載不同的版本。
if (process.platform === "linux" && process.arch === "x64") { downloadUrl += "linux-x86_64.tar.bz2" } else if (process.platform === "linux") { downloadUrl += "linux-i686.tar.bz2" } else if (process.platform === "darwin") { downloadUrl += "macosx.zip" } else if (process.platform === "win32") { downloadUrl += "windows.zip" } else { console.log("Unexpected platform or architecture:", process.platform, process.arch) exit(1) }
?步驟和注意點:
?[ 1 ] 安裝phantomjs
npm install phantomjs@1.9.2-1
這個版本比較穩定,最好不要下最新版本,我之前弄了好久都安裝不成功,就上github看里面的Issue,作者也建議安裝1.9.2-1(特別在win下)
?[ 2 ] 安裝ImageMagic和gm模塊
?根據作者描述GraphicsMagick and ImageMagick for node,所以使用gm的時候注意設置是ImageMagick的模式。
var gm = require("gm").subClass({ imageMagick: true });
?使用方法:(里面的鏈接都有詳細解釋,我就不展開了)
?{1}phantomjs模塊的使用方法: https://www.npmjs.org/package/phantomjs
?{2}phantomjs的API: http://phantomjs.org/
?{3}gm模塊的使用方法: https://www.npmjs.org/package/gm
性能測試:
?本機:
CPU:i5-3230M 2.60GHz
內存:?8G
?截圖淘寶首頁花費時間:20.0+秒 (山窮水盡疑無路)
?服務器:
?CPU:16 Intel(R) Xeon(R) CPU L5630 @ 2.13GHz
?內存:49552672K(約等于47.25G)
??截圖淘寶首頁花費時間:1.0+秒 (柳暗花明又一村)
?
?第三個方案:(使用webkit2png工具)
?今天剛剛好跟一位騰訊的小伙伴聊天,剛剛好聊起這事兒,他也剛剛好做了跟我相似的東西,但他使用的是webkit2png,所以就互相交流一下了。他是使用webkit2png的,webkit2png是一個命令行工具,其實跟phantomjs也很類似,我查了下也是支持各個平臺的。
@TQ博客: http://targetkiller.net/preview-mac-in-win/
具體請移步到文檔:http://www.paulhammond.org/webkit2png/
微博:@任重致遠-MR梁廣彬
英文名:jambinliang
花名:無惟
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78016.html
摘要:目前這個爬蟲還是比較簡單的類型的,直接抓取頁面,然后在頁面中提取數據,保存數據到數據庫??偨Y寫這個項目其實主要的難點在于程序穩定性的控制,容錯機制的設置,以及錯誤的記錄,目前這個項目基本能夠實現直接運行一次性跑通整個流程。 前言 之前研究數據,零零散散的寫過一些數據抓取的爬蟲,不過寫的比較隨意。有很多地方現在看起來并不是很合理 這段時間比較閑,本來是想給之前的項目做重構的。后來 利用這...
摘要:比如分鐘破譯朋友圈測試小游戲文章里用的方法但有些根本就沒有提供網頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機上的網絡請求全部顯示出來。總結下,重點是的抓取,關鍵是配置代理證書,難點是對請求的分析。 爬蟲的案例我們已講得太多。不過幾乎都是 網頁爬蟲 。即使有些手機才能訪問的網站,我們也可以通過 Chrome 開發者工具 的 手機模擬 功能來訪問,以便...
摘要:獲取獲取上下文句柄執行計算銷毀句柄除此之外,還可以使用意為在瀏覽器環境執行腳本,可傳入第二個參數作為句柄,而則針對選中的一個元素執行操作。 我們日常使用瀏覽器或者說是有頭瀏覽器時的步驟為:啟動瀏覽器、打開一個網頁、進行交互。 無頭瀏覽器指的是我們使用腳本來執行以上過程的瀏覽器,能模擬真實的瀏覽器使用場景。 有了無頭瀏覽器,我們就能做包括但不限于以下事情: 對網頁進行截圖保存為圖片或 ...
閱讀 1000·2021-11-22 13:52
閱讀 1441·2021-11-19 09:40
閱讀 3122·2021-11-16 11:44
閱讀 1263·2021-11-15 11:39
閱讀 3893·2021-10-08 10:04
閱讀 5333·2021-09-22 14:57
閱讀 3096·2021-09-10 10:50
閱讀 3177·2021-08-17 10:13