python html生成图片_Python将html文件转为图片
背景
在上一期玩转Echarts5中,留了一个问题:将html转为图片。周末亲测,发现cancas可以提取并保存,但是
于是,本主再次基础重器selenium。
代码
import base64
import os
import time
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
options = webdriver.ChromeOptions()
#options.add_argument('--headless') # Chrome最新驱动无效,可以使用firefox或phantomjs
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('window-size=1920x1080')
path = os.getcwd().replace("\\", "/")
full_path = path+'/templates/test_flask_render.html'
try:
driver = webdriver.Chrome(options=options)
driver.maximize_window()
driver.get(f'file:///{full_path}')
time.sleep(3)
driver.get_screenshot_as_file('./images/test-canvas.png')
driver.quit()
print("截图成功")
except WebDriverException:
print("截图失败")
这玩意有几个弊端:
1.selenium新版本已经不支持谷歌浏览器的无头模式。
2.预设浏览器窗口大小,仅截取窗口内的内容。
3.渲染图片需要时间,所以截图需要延迟3s。
全部页面
from selenium import webdriver
import time
import os.path
import multiprocessing as mp
def webshot(tup):
print("当前进程%d已启动" %os.getpid())
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 不知为啥只能在无头模式执行才能截全屏
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
driver.maximize_window()
# 返回网页的高度的js代码
js_height = "return document.body.clientHeight"
picname = str(tup[0])
link = tup[1]
print(link)
try:
driver.get(link)
k = 1
height = driver.execute_script(js_height)
while True:
if k * 500 < height:
js_move = "window.scrollTo(0,{})".format(k * 500)
print(js_move)
driver.execute_script(js_move)
time.sleep(0.2)
height = driver.execute_script(js_height)
k += 1
else:
break
scroll_width = driver.execute_script('return document.body.parentNode.scrollWidth')
scroll_height = driver.execute_script('return document.body.parentNode.scrollHeight')
driver.set_window_size(scroll_width, scroll_height)
driver.get_screenshot_as_file("D:/pics/" + picname)
print("Process {} get one pic !!!".format(os.getpid()))
driver.quit()
except Exception as e:
print(picname, e)
if __name__ == '__main__':
# 首先创建一个保存截图的文件夹
filename = "D:/pics/"
if not os.path.isdir(filename):
# 判断文件夹是否存在,如果不存在就创建一个
os.makedirs(filename)
# 读取保存url的文件,返回一个列表
# 列表中每个元素都是一个元组,文件保存url的格式是:保存为图片的名称, 网页地址。
# 例:baidu.png,https://www.baidu.com
# zhihu.png,https://www.zhihu.com
with open('urls.txt', 'r') as f:
lines = f.readlines()
urls = []
for line in lines:
thelist = line.strip().split(",")
if len(thelist) == 2 and thelist[0] and thelist[1]:
urls.append((thelist[0], thelist[1]))
# 创建进程池来多进程执行
pool = mp.Pool()
pool.map_async(func=webshot, iterable=urls)
pool.close()
pool.join()
结语
最早本主使用腾讯地图的API,实现热点图等。最近在尝试使用Bokeh联合Echarts5实现地理位置可视化的交互。
python html生成图片_Python将html文件转为图片相关推荐
- python批量生成图片_python图像处理-批量生成纯色图片
前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 上一 ...
- 通过Python的speech_recognition库将音频文件转为文字
文章目录 前言 一.音频准备 二.音频声音 三.格式转换 四.音频转文字 1.引入库 2.定义音频路径 3.创建一个Recognizer对象 4.打开音频文件,将音频文件读入Recognizer对象 ...
- python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式
python 使用字节流bytes格式读取文件转为int格式,再转为0,1字符串格式 with open('test.jpg', 'rb') as src:t = src.read(1) # 读进1B ...
- 这篇文章教你把word文件转为图片
把word文件转为图片,一下子是没法转成的,需要先转成pdf,再转成图片,就可以达到目的,话不多说,直接上代码 //先将word转成pdf并放在字节数组流里面FileInputStream fileI ...
- Python 提取网页正文,将网页转为图片!
Python 提取网页正文,将网页转为图片!!! 用到python的newspaper库 from newspaper import Article news = Article(link.strip ...
- PHP将word文件转为图片之二
0804记录安装php将Word转为pdf过程 一.安装宝塔 这一步就略过了 二.安装php相关扩展 Fileinfo Redis Mcrypt Imagemagick Exif 三.Linux安装需 ...
- 使用5.0.0版本的cssbox将html文件转为图片文件,并解决字体显示问题
使用5.0.0版本的cssbox将html文件转为图片文件,并解决字体显示问题 1. 引入依赖 2. 编写Util类 3. 调用Util 4. 存在的问题 5. 解决字体不兼容问题 6. 官方文档 在 ...
- python csv转excel_将Excel文件转为csv文件的python脚本
将Excel文件转为csv文件的python脚本 #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚 ...
- python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法
在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...
最新文章
- 转 微博 linux中ctime,mtime,atime的区别
- 计算机编辑功能在哪,注册表编辑器怎么打开-电脑的剪切板在哪里 电脑剪切板里面的内容怎么修改...
- python期末考试题及答案翻译-[译]Python面试中8个必考问题
- 实现跨域cookie共享(转载)
- lwIP ARP协议分析
- (转)java中对集合对象list的几种循环访问总结
- vue学习路线图,学习vue就是那么清晰。
- logisim优先编码器怎么用_变频电机为什么要用编码器?又该如何选型?
- VirtualBox设置共享目录(主机win7,虚拟机Ubuntu)
- 442个超实用电脑快捷键大全!总有你会用上的
- zouxy09博客原创性博文导航
- 如何估算一个分布式系统的容量
- java流程控制if_[Java]Java基本语法结构(运算符,流程控制语句,if语句)
- Axure9 导入元件库
- jquery ajax 详细教程视频,Ajax+jquery基础与提升2017视频教程
- php 显示探针_PHP探针
- Windows平台下使用ffmpeg和segmenter实现m3u8直播点播
- 第十届全国大学生GIS应用技能大赛下午(试题及参考答案)
- c语言 main()可否省略,main函数中省略返回语句
- java 导出压缩文件,里面文件名字乱码的问题(麒麟系统,linux)