背景
之前寫的使用 snapshot_selenium 來保存pyeacharts渲染成的網頁截圖,可以正常運行。程序擱置了半年,不知道動了電腦哪里,再次運行程序時,程序開始報錯:JavascriptException: javascript error: echarts is not defined (Session info: chrome-headless-shell=126.0.6478.126),來來回回試了一些方式,包括卸載重裝相關模塊或者替換模塊,均沒解決問題。
在查找解決方案的時候,看到一些可能有用的后續替代方案,pyeacharts渲染成圖片,可以有至少三個模塊來支持:
from snapshot_selenium import snapshot # selenium方式
# from snapshot_phantomjs import snapshot # phantomjs方式
# from snapshot_pyppeteer import snapshot # 采用pyppeteer生成圖片
由于之前好使的snapshot_selenium 方式開始報錯,另兩個模塊也不能用了。
解決方式
通過嘗試網上給出的解決策略,最后選擇了參考博文《selenium.common.exceptions.JavascriptException: Message: javascript error: echarts is not defined 錯誤》給出的方式試了下,程序確實可以運行了。就是稍微麻煩一點,不過先解決眼前的危機再說。
處理過程:
- 第一步:在下述github鏈接 https://github.com/pyecharts/pyecharts-assets.git 中下載項目
第二步:啟動服務(在cmd中執行,當時當關閉終端之后這個服務會停止)
第三步:打開assets文件所在位置,運行服務,命令行中運行類似下列代碼:cd pyecharts-assets # 切換到下載的項目文件夾 python -m http.server # 啟動服務
第四步:在python代碼中加入下述代碼
from pyecharts.globals import CurrentConfig CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/"
操作完上述過程后,程序成功運行。good!
備注: 每次調用pyecharts包的時候都要啟動一次該服務,優化方向是后臺一直運行次服務。