欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang快速實現(xiàn)網(wǎng)頁截圖的方法

 更新時間:2021年03月04日 09:21:24   投稿:mrr  
這篇文章主要介紹了golang快速實現(xiàn)網(wǎng)頁截圖的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

golang是近幾年發(fā)展非常迅猛的一款服務器端的語言,其生態(tài)也日益豐富。對于使用golang實現(xiàn)網(wǎng)頁截圖這個需求,筆者在經(jīng)過一番調(diào)研之后發(fā)現(xiàn)大家有推薦Selenium方案,但是這一方案問題較多:

  • 需要安裝Selenium或是PhantomJS
  • PhantomJS已經(jīng)停止維護了
  • Selenium的運行需要安裝chromedriver
  • chromedriver對chrome的版本有一定要求

還有推薦headless chrome方案的,但是這一方案也需要自行在服務器端安裝一款瀏覽器,對服務器的壓力比較大,并發(fā)性能也不好,所以最后筆者直接選用了一款第三方API的截圖服務。

該服務有如下特點:

  • 支持多線路
  • 支持登錄截圖
  • 支持UA變換
  • 支持Cookie注入 實現(xiàn)登錄截圖
  • 支持自定義寬高
  • 支持網(wǎng)頁滾動截圖
  • 支持設定截圖前的延遲時間

使用方式也很簡單,我們打開它的首頁 https://www.screenshotmaster.com/ 注冊一個賬號,然后你會在用戶中心獲取到一個唯一的Token,保存好這個Token 不要泄漏!

下面來看看它支持的參數(shù):

您可以前往 API文檔 頁面查看更多的參數(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)
  }
}

到此這篇關于golang快速實現(xiàn)網(wǎng)頁截圖的文章就介紹到這了,更多相關go實現(xiàn)網(wǎng)頁截圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • GoLang并發(fā)機制探究goroutine原理詳細講解

    GoLang并發(fā)機制探究goroutine原理詳細講解

    goroutine是Go語言提供的語言級別的輕量級線程,在我們需要使用并發(fā)時,我們只需要通過 go 關鍵字來開啟 goroutine 即可。這篇文章主要介紹了GoLang并發(fā)機制goroutine原理,感興趣的可以了解一下
    2022-12-12
  • 深入Golang中的sync.Pool詳解

    深入Golang中的sync.Pool詳解

    這篇文章主要介紹了深入Golang中的sync.Pool詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Go語言面向?qū)ο笾械亩鄳B(tài)你學會了嗎

    Go語言面向?qū)ο笾械亩鄳B(tài)你學會了嗎

    面向?qū)ο笾械亩鄳B(tài)(Polymorphism)是指一個對象可以具有多種不同的形態(tài)或表現(xiàn)方式,本文將通過一些簡單的示例為大家講解一下多態(tài)的實現(xiàn),需要的可以參考下
    2023-07-07
  • Go語言基礎for循環(huán)語句的用法及示例詳解

    Go語言基礎for循環(huán)語句的用法及示例詳解

    這篇文章主要為大家介紹了Go語言基礎for循環(huán)語句的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • Go語言中interface語法與使用詳解

    Go語言中interface語法與使用詳解

    Go語言里面設計最精妙的應該算interface,它讓面向?qū)ο?內(nèi)容組織實現(xiàn)非常的方便,下面這篇文章主要給大家介紹了關于Go語言中interface語法與使用的相關資料,需要的朋友可以參考下
    2022-07-07
  • 使用Go重構(gòu)流式日志網(wǎng)關的實戰(zhàn)分享

    使用Go重構(gòu)流式日志網(wǎng)關的實戰(zhàn)分享

    流式日志網(wǎng)關的主要功能是提供?HTTP?接口,接收?CDN?邊緣節(jié)點上報的各類日志(訪問日志/報錯日志/計費日志等),將日志作預處理并分流到多個的?Kafka?集群和?Topic?中,本文就給大家分享如何使用?Go?重構(gòu)流式日志網(wǎng)關
    2023-06-06
  • go運算符對變量和值執(zhí)行操作示例詳解

    go運算符對變量和值執(zhí)行操作示例詳解

    這篇文章主要為大家介紹了go運算符對變量和值執(zhí)行操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • CSP communicating sequential processes并發(fā)模型

    CSP communicating sequential processes并發(fā)模型

    這篇文章主要為大家介紹了CSP communicating sequential processes并發(fā)模型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • go1.21中slog日志包用法入門

    go1.21中slog日志包用法入門

    go1.21中,slog這一被Go語言團隊精心設計的結(jié)構(gòu)化日志包正式落地,本文將帶領讀者上手slog,體會其與傳統(tǒng)log的差異,感興趣的小伙伴快跟隨小編一起學習一下吧
    2023-09-09
  • 一文帶你掌握go中的異常處理

    一文帶你掌握go中的異常處理

    代碼在執(zhí)行的過程中可能因為一些邏輯上的問題而出現(xiàn)錯誤,我們稱之為異常,那么如何處理這些異常呢,下面小編就來和大家詳細聊聊golang中的異常處理機制吧
    2023-09-09

最新評論