我使用Bokeh软件包生成地图以显示模拟结果。输出是具有交互性的html格式的单独地图。交互性是个别地图所必需的。Python打开html文件,截取屏幕截图,裁剪并保存为图像
请参阅此链接的示例:
http://bokeh.pydata.org/en/0.10.0/docs/gallery/texas.html
仿真可以被自动设置为运行的次数和将产生的地图为每次运行。这可能是100张地图。我希望能够将地图缝合在一起以创建电影 - 交互性不是必需的。 Bokeh具有通过浏览器创建PNG文件的功能,因此可以手动将每个地图保存为文件并使用ffmpeg创建电影。但是,如果您需要为100个文件执行此操作,则这不是一个真正的选项。目前无法通过Bokeh自动生成PNG文件,但我相信它会在某些时候添加。
所以我需要一个解决方法。我的想法是从他们存储在本地驱动器上的位置打开每个html文件,拍摄屏幕截图,裁剪图像以保留所需的部分并保存。但我还没有找到可行的解决方案。
裁剪图像很简单:
from PIL import Image
img = Image.open(file_name)
box = (1, 1, 1000, 1000)
area = img.crop(box)
area.save('saved_image', 'jpeg')
我的问题是打开HTML文件,并采取截屏摆在首位喂到上面的代码。
为此,我尝试了以下操作,但都需要一个URL而不是html文件。也都使用Firefox不起作用,但我已经安装了Chrome并适当地更改了代码。
How to take partial screenshot with Selenium WebDriver in python?
此http://www.idiotinside.com/2015/10/20/take-screenshot-selenium-python/
我的代码是:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('file_name')
driver.save_screenshot('image.png')
driver.quit()
将返回:
{"code":-32603,"message":"Cannot navigate to invalid URL"}
显然文件名不是一个URL,这样是明确的。如果你通过它的网站,它工作正常。任何帮助获得一个HTML加载和拍照将不胜感激!它不必涉及硒。
是什么操作系统,你运行? – zhqiat
Ubuntu 14.04和Windows。 – Pete
我希望一个散景的人有一个方法给你;但我会建议使用Qt的qwebview渲染你的HTML,并抓住窗口形象http://stackoverflow.com/questions/24413385/pyqt4-qwidget-save-as-image – mdurant