使用 Python 的 HTML 到 IMAGE

下面是一个变量html_str,它是一个字符串,其中包含 html 标记和正文中的内容。我使用python中的以下代码从此字符串创建了一个.html文件。

html_file = open("filename.html", "w")
html_file.write(html_str)
html_file.close()

现在我得到了名为文件名“文件名.html”的html文件。现在我想将“文件名.html”转换为名为文件名的图像.jpg其中包含html文件的确切内容。请帮帮我。


慕姐8265434
浏览 219回答 4
4回答

www说

您可以使用imgkit来执行此操作import imgkitimgkit.from_file('test.html', 'out.jpg')或者您也可以使用 htmlcsstoimage Api# pip3 install requestsimport requestsHCTI_API_ENDPOINT = "https://hcti.io/v1/image"HCTI_API_USER_ID = 'your-user-id'HCTI_API_KEY = 'your-api-key'data = { 'html': "<div class='box'>Hello, world!</div>",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'css': ".box { color: white; background-color: #0f79b9; padding: 10px; font-family: Roboto }",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'google_fonts': "Roboto" }image = requests.post(url = HCTI_API_ENDPOINT, data = data, auth=(HCTI_API_USER_ID, HCTI_API_KEY))print("Your image URL is: %s"%image.json()['url'])# https://hcti.io/v1/image/7ed741b8-f012-431e-8282-7eedb9910b32

杨魅力

如果你不希望你的项目依赖于wkhtmltopdf,就像其他Python模块使用的那样,我推荐html2image。您可以使用该命令获取它。您的计算机上还应安装Web浏览器(目前为Chrome/Chromium)。pip install html2image安装后,您可以截取HTML字符串的屏幕截图,如下所示:from html2image import Html2Imagehti = Html2Image()html = '<h1> A title </h1> Some text.'css = 'body {background: red;}'# screenshot an HTML string (css is optional)hti.screenshot(html_str=html, css_str=css, save_as='page.png')您还可以直接截取现有 HTML 文件或 URL 的屏幕截图:# screenshot an HTML filehti.screenshot(&nbsp; &nbsp; html_file='page.html', css_file='style.css', save_as='page2.png')# screenshot an URLhti.screenshot(url='https://www.python.org', save_as='python_org.png')有关文档和更多示例,可以查看项目的 GitHub 页面。

守候你守候我

渲染HTML网站的另一个非常有用的工具是无头Chromium浏览器。在javascript中,你会使用puppeteer api与它进行交互,但是有一个非官方的poppeteer python移植,叫做pyppeteer。根据我对imgkit等python工具的经验,Chromium解决方案在加载图像或iFrame等外部资产时要可靠得多。要使用pyppeteer获取呈现的HTML的图像版本,您只需加载页面,然后制作整页屏幕截图:import asynciofrom pyppeteer import launchasync def main():&nbsp; &nbsp; browser = await launch()&nbsp; &nbsp; page = await browser.newPage()&nbsp; &nbsp; await page.goto('http://example.com')&nbsp; &nbsp; await page.screenshot({'path': 'example.png', 'fullPage': 'true'})&nbsp; &nbsp; await browser.close()asyncio.get_event_loop().run_until_complete(main())

慕尼黑的夜晚无繁华

from html2image import Html2Imagehti = Html2Image()with open('./test.html') as f:&nbsp; &nbsp; hti.screenshot(f.read(), save_as='out.png')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python