Python讀取HTML中的canvas并且以圖片形式存入Word文檔
前言
朋友提問:
創(chuàng)建Word文檔并插入
市面上有很多圖表繪制庫,例如echarts和highcharts等等。對于這種由js動態(tài)繪制的圖表,我們只能控制游覽器自動截圖存入word,
完整代碼如下:
from docx import Document import os from selenium import webdriver browser = webdriver.Chrome() # 調(diào)整游覽器大小達到調(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文檔的指定位置。
待插入的圖表元素都有對應的ID可以定位:
那我們只需要對Word文檔要插入的位置進行標記,模板如下:
然后完整代碼如下:
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)整游覽器大小達到調(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ù)庫性能概覽_模板.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ù)庫性能概覽.docx") browser.close()
生成結果:
到此這篇關于Python讀取HTML中的canvas并且以圖片形式存入Word文檔的文章就介紹到這了,更多相關Python讀取canvas內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python實現(xiàn)隨機創(chuàng)建電話號碼的方法示例
這篇文章主要介紹了Python實現(xiàn)隨機創(chuàng)建電話號碼的方法,涉及Python隨機數(shù)運算相關操作技巧,需要的朋友可以參考下2018-12-12Jupyter?notebook運行后打不開網(wǎng)頁的問題解決
本文主要介紹了Jupyter?notebook運行后打不開網(wǎng)頁的問題解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03