對于Java實現(xiàn)網(wǎng)頁截圖這個問題摄欲,筆者在網(wǎng)上一番搜索之后,大概看到了如下三種實現(xiàn)方式吼野。
- 使用Robot
- 利用JNI抱怔,調(diào)用第三方C/C++組件
- 自行解析HTML標記,并將其圖像化
第一種方式無法同時處理大量數(shù)據(jù)固逗,第二種方式增加了技術的復雜性哈踱,第三章方式中規(guī)中矩质欲,但是開發(fā)費時,尤其時對于JavaScript的解析凤薛,難度會增大很多。所以镀迂,筆者放棄使用了前3種方式求豫,直接使用了一個第三方截圖服務,目前來看各方面都是很滿意的仍源。
該服務有如下特點:
- 支持多線路
- 支持登錄截圖
- 支持UA變換
- 支持Cookie注入 實現(xiàn)登錄截圖
- 支持自定義寬高
- 支持網(wǎng)頁滾動截圖
- 支持設定截圖前的延遲時間
使用方式也很簡單挟冠,我們打開它的首頁 https://www.screenshotmaster.com/ 注冊一個賬號居兆,然后你會在用戶中心獲取到一個唯一的Token操灿,保存好這個Token 不要泄漏!
下面來看看它支持的參數(shù):
您可以前往API文檔頁面查看更多的參數(shù)泵督。
使用Java調(diào)用截屏大師的接口獲取截圖:
package main;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLEncoder;
public class Main {
public static void main(String[] args) {
try {
// 參數(shù)
String token = "YOUR_API_TOKEN";
String url = URLEncoder.encode("https://www.baidu.com");
int width = 1280;
int height = 800;
int full_page = 1;
// 構(gòu)造URL
String query = "https://www.screenshotmaster.com/api/v1/screenshot";
query += String.format("?token=%s&url=%s&width=%d&height=%d&full_page=%s",
token, url, width, height, full_page);
URL apiUrl = new URL(query);
// 調(diào)用API并將結(jié)果保存進screenshot.png
InputStream inputStream = apiUrl.openStream();
OutputStream outputStream = new FileOutputStream("./screenshot.png");
inputStream.transferTo(outputStream);
inputStream.close();
outputStream.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}
}