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)文章
關(guān)于python爬蟲(chóng)模塊urllib庫(kù)詳解
這篇文章主要介紹了關(guān)于python爬蟲(chóng)模塊urllib庫(kù)詳解,學(xué)習(xí)爬蟲(chóng),最初的操作便是模擬瀏覽器向服務(wù)端發(fā)出請(qǐng)求,這里我們就學(xué)習(xí)使用urlib庫(kù)的用法,需要的朋友可以參考下2023-07-07Python實(shí)現(xiàn)遍歷目錄的方法【測(cè)試可用】
這篇文章主要介紹了Python實(shí)現(xiàn)遍歷目錄的方法,涉及Python針對(duì)目錄與文件的遍歷、判斷、讀取相關(guān)操作技巧,需要的朋友可以參考下2017-03-03Python實(shí)現(xiàn)隨機(jī)創(chuàng)建電話號(hào)碼的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)隨機(jī)創(chuàng)建電話號(hào)碼的方法,涉及Python隨機(jī)數(shù)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-12-12淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作
下面小編就為大家?guī)?lái)一篇淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06Jupyter?notebook運(yùn)行后打不開(kāi)網(wǎng)頁(yè)的問(wèn)題解決
本文主要介紹了Jupyter?notebook運(yùn)行后打不開(kāi)網(wǎng)頁(yè)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Python腳本打包成可執(zhí)行文件過(guò)程解析
這篇文章主要介紹了Python腳本打包成可執(zhí)行文件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10