golang快速實(shí)現(xiàn)網(wǎng)頁(yè)截圖的方法
golang是近幾年發(fā)展非常迅猛的一款服務(wù)器端的語(yǔ)言,其生態(tài)也日益豐富。對(duì)于使用golang實(shí)現(xiàn)網(wǎng)頁(yè)截圖這個(gè)需求,筆者在經(jīng)過(guò)一番調(diào)研之后發(fā)現(xiàn)大家有推薦Selenium方案,但是這一方案問(wèn)題較多:
- 需要安裝Selenium或是PhantomJS
- PhantomJS已經(jīng)停止維護(hù)了
- Selenium的運(yùn)行需要安裝chromedriver
- chromedriver對(duì)chrome的版本有一定要求
還有推薦headless chrome方案的,但是這一方案也需要自行在服務(wù)器端安裝一款瀏覽器,對(duì)服務(wù)器的壓力比較大,并發(fā)性能也不好,所以最后筆者直接選用了一款第三方API的截圖服務(wù)。
該服務(wù)有如下特點(diǎn):
- 支持多線路
- 支持登錄截圖
- 支持UA變換
- 支持Cookie注入 實(shí)現(xiàn)登錄截圖
- 支持自定義寬高
- 支持網(wǎng)頁(yè)滾動(dòng)截圖
- 支持設(shè)定截圖前的延遲時(shí)間
使用方式也很簡(jiǎn)單,我們打開(kāi)它的首頁(yè) https://www.screenshotmaster.com/ 注冊(cè)一個(gè)賬號(hào),然后你會(huì)在用戶中心獲取到一個(gè)唯一的Token,保存好這個(gè)Token 不要泄漏!
下面來(lái)看看它支持的參數(shù):

您可以前往 API文檔 頁(yè)面查看更多的參數(shù)。
使用golang調(diào)用截屏大師的接口獲取截圖:
package main
import (
"fmt"
"io"
"io/ioutil"
"net/http"
url2 "net/url"
"os"
)
func main() {
// 參數(shù)
token := "YOUR_API_TOKEN"
url := url2.QueryEscape("https://www.baidu.com")
width := 1280
height := 800
full_page := 1
// 構(gòu)造URL
query := "https://www.screenshotmaster.com/api/v1/screenshot"
query += fmt.Sprintf("?token=%s&url=%s&width=%d&height=%d&full_page=%s",
token, url, width, height, full_page)
// 調(diào)用API
resp, err := http.Get(query)
if err != nil {
panic(err)
}
defer resp.Body.Close()
// 檢查是否調(diào)用成功
if resp.StatusCode != 200 {
errorBody, _ := ioutil.ReadAll(resp.Body)
panic(fmt.Errorf("error while calling api %s", errorBody))
}
// 保存截圖
file, err := os.Create("./screenshot.png")
if err != nil {
panic(err)
}
defer file.Close()
_, err = io.Copy(file, resp.Body)
if err != nil {
panic(err)
}
}
到此這篇關(guān)于golang快速實(shí)現(xiàn)網(wǎng)頁(yè)截圖的文章就介紹到這了,更多相關(guān)go實(shí)現(xiàn)網(wǎng)頁(yè)截圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang 生成二維碼海報(bào)的實(shí)現(xiàn)代碼
這篇文章主要介紹了golang 生成二維碼海報(bào)的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
Go語(yǔ)言網(wǎng)站使用異步編程和Goroutine提高Web的性能
作為一門現(xiàn)代化編程語(yǔ)言,Go語(yǔ)言提供了強(qiáng)大的異步編程能力,使得程序員可以以更高效的方式處理并發(fā)任務(wù),在Go語(yǔ)言中,使用Goroutine在單個(gè)進(jìn)程中實(shí)現(xiàn)多任務(wù)并行處理,以及如何使用協(xié)程池來(lái)進(jìn)一步提高Web服務(wù)器的處理能力,2024-01-01
初探Golang數(shù)據(jù)結(jié)構(gòu)之Slice的使用
在學(xué)習(xí)Go語(yǔ)言時(shí),一直對(duì)數(shù)組和切片的使用場(chǎng)景好奇,不明白為什么推薦使用切片來(lái)代替數(shù)組,所以本文就來(lái)和大家梳理一下Slice切片的相關(guān)知識(shí)吧2023-09-09
Golang實(shí)現(xiàn)獲取與解析命令行參數(shù)
這篇文章主要為大家詳細(xì)介紹了Golang如何實(shí)現(xiàn)獲取與解析命令行參數(shù),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考一下2024-01-01
golang 檢查網(wǎng)絡(luò)狀態(tài)是否正常的方法
今天小編就為大家分享一篇golang 檢查網(wǎng)絡(luò)狀態(tài)是否正常的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Golang中時(shí)間格式化的實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中進(jìn)行時(shí)間進(jìn)行格式化的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-09-09

