golang是近幾年發展非常迅猛的一款服務器端的語言,其生態也日益豐富。對于使用golang實現網頁截圖這個需求,筆者在經過一番調研之后發現大家有推薦Selenium方案,但是這一方案問題較多:
還有推薦headless chrome方案的,但是這一方案也需要自行在服務器端安裝一款瀏覽器,對服務器的壓力比較大,并發性能也不好,所以最后筆者直接選用了一款第三方API的截圖服務。
使用方式也很簡單,我們打開它的首頁 https://www.screenshotmaster.com/ 注冊一個賬號,然后你會在用戶中心獲取到一個唯一的Token,保存好這個Token 不要泄漏!
package main
import (
"fmt"
"io"
"io/ioutil"
"net/http"
url2 "net/url"
"os"
)
func main() {
// 參數
token := "YOUR_API_TOKEN"
url := url2.QueryEscape("https://www.baidu.com")
width := 1280
height := 800
full_page := 1
// 構造URL
query := "https://www.screenshotmaster.com/api/v1/screenshot"
query += fmt.Sprintf("?token=%surl=%swidth=%dheight=%dfull_page=%s",
token, url, width, height, full_page)
// 調用API
resp, err := http.Get(query)
if err != nil {
panic(err)
}
defer resp.Body.Close()
// 檢查是否調用成功
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)
}
}
到此這篇關于golang快速實現網頁截圖的文章就介紹到這了,更多相關go實現網頁截圖內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!