Python讀取HTML中的canvas并且以圖片形式存入Word文檔
前言
朋友提問(wèn):

創(chuàng)建Word文檔并插入
市面上有很多圖表繪制庫(kù),例如echarts和highcharts等等。對(duì)于這種由js動(dòng)態(tài)繪制的圖表,我們只能控制游覽器自動(dòng)截圖存入word,
完整代碼如下:
from docx import Document
import os
from selenium import webdriver
browser = webdriver.Chrome()
# 調(diào)整游覽器大小達(dá)到調(diào)整圖表寬度的目的
browser.set_window_size(540, 1024)
url = "file://" + \
os.path.abspath("html/awrcrt_MESDB_1_21369_21373.html").replace("\\", "/")
browser.get(url)
doc = Document()
for canvas in browser.find_elements_by_tag_name("canvas"):
canvas.location_once_scrolled_into_view
canvas.screenshot("tmp.png")
doc.add_picture("tmp.png")
doc.save("img.docx")
然后我們得到Word文檔:

插入到已存在的Word文檔指定的位置
后面朋友又反饋,只需要插入HTML中的指定幾張圖表到現(xiàn)有Word文檔的指定位置。
待插入的圖表元素都有對(duì)應(yīng)的ID可以定位:

那我們只需要對(duì)Word文檔要插入的位置進(jìn)行標(biāo)記,模板如下:

然后完整代碼如下:
from docx.shared import Mm
from docxtpl import DocxTemplate, InlineImage
from docx import Document
import os
from selenium import webdriver
browser = webdriver.Chrome()
# 調(diào)整游覽器大小達(dá)到調(diào)整圖表寬度的目的
browser.set_window_size(540, 1024)
url = "file://" + \
os.path.abspath("html/awrcrt_MESDB_1_21369_21373.html").replace("\\", "/")
browser.get(url)
tpl = DocxTemplate("數(shù)據(jù)庫(kù)性能概覽_模板.docx")
canvas_ids = ["canvas_cpu", "canvas_conn",
"canvas_commit", "canvas_logon", "canvas_event"]
context = {}
context["dbname"] = "MESDB"
for canvas_id in canvas_ids:
canvas = browser.find_element_by_id(canvas_id)
canvas.location_once_scrolled_into_view
canvas.screenshot(f"{canvas_id}.png")
context[canvas_id] = InlineImage(tpl, f"{canvas_id}.png", width=Mm(165))
tpl.render(context)
tpl.save("數(shù)據(jù)庫(kù)性能概覽.docx")
browser.close()生成結(jié)果:

到此這篇關(guān)于Python讀取HTML中的canvas并且以圖片形式存入Word文檔的文章就介紹到這了,更多相關(guān)Python讀取canvas內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Anaconda安裝本地python包的方法及路徑問(wèn)題(圖文)
這篇文章主要介紹了用Anaconda安裝本地python包的方法及路徑問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python ArgumentParse的subparser用法說(shuō)明
這篇文章主要介紹了Python ArgumentParse的subparser用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
python flask web服務(wù)實(shí)現(xiàn)更換默認(rèn)端口和IP的方法
今天小編就為大家分享一篇python flask web服務(wù)實(shí)現(xiàn)更換默認(rèn)端口和IP的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
python2.7使用scapy發(fā)送syn實(shí)例
這篇文章主要介紹了python2.7使用scapy發(fā)送syn實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
教你使用python做一個(gè)“罰點(diǎn)球”小游戲
這篇文章主要介紹了用python做一個(gè)“罰點(diǎn)球”小游戲,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
python select.select模塊通信全過(guò)程解析
這篇文章主要為大家解析了python select.select模塊通信全過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09

