首页 > 解决方案 > 在 Python 中将 html 表转换为图像(其他解决方案不起作用)

问题描述

我需要将 html 表保存为图像(argb,png),但是 stackoverflow 上的所有解决方案都不适合我的项目,因为它们都使用 os(cmd) 或使用数量有限的 api。我需要无限次保存图片,这必须在 Jupiter Notebook 中工作。

我怎么能做到这一点?谢谢!

标签: pythonpython-3.ximage

解决方案


最简单的解决方案是使用浏览器驱动程序为您的 html 拍照。一般来说,您可以使用 pyppeteer 为远程页面拍照:

import asyncio
import pyppeteer
async def main():
    browser = await pyppeteer.launch()
    page = await browser.newPage()
    await page.goto('https://example.com/')
    await page.screenshot({'path': './example.png'})
    await browser.close()
asyncio.get_event_loop().run_until_complete(main())

goto您也可以直接将带有数据 url 的内容放入调用中:

import asyncio
import pyppeteer
import base64
async def main():
    browser = await pyppeteer.launch()
    page = await browser.newPage()
    await page.goto('data:text/html,<table><tr><td>Some Cell</td><td>Some Other cell</td></tr></table>')
    await page.screenshot({'path': './screenshot.png'})
    await browser.close()
asyncio.get_event_loop().run_until_complete(main())

由此生成的图片如下所示:

表渲染

当然,你需要pyppeteer在你的虚拟环境中安装它:

$ python -m pip install pyppeteer


与上面相同,但在此处写入 Jupyter Notebook:https ://gist.github.com/tiberiucorbu/6726e27a736ba7b07e3d0973e905e4ff


推荐阅读