网页视频抓取脚本( 编程语言python使用方案:selenium+phantomjs方案介绍实现自动预览)
优采云 发布时间: 2021-11-11 01:14网页视频抓取脚本(
编程语言python使用方案:selenium+phantomjs方案介绍实现自动预览)
Python中网页自动截图示例说明
更新时间:2018-05-17 14:43:38 作者:test_2016
今天小编就给大家分享一个如何用Python实现网页自动截图的样例讲解。跟着小编一起来看看吧
背景介绍
最近在为部门写一个自动化测试工具。该工具涉及一个功能,就是将自动化测试生成的html报告截图作为邮件正文,将html文件上传到web服务器,并以链接的形式添加到邮件中,最后发送电子邮件。
任务难度
页面自动截图的相关方面我之前没有接触过,所以如何自动截图页面成为本地研究的方向。
计划思维
刚接到这个任务的时候,我并不认同现在的计划。曾经有人认为,通过将html报告的内容写入邮件正文中,可以将邮件以html的形式发送。尝试后,我发现电子邮件不支持带有javascript的html。因此,选择了预览html和自动截屏的选项。
编程语言
蟒蛇2.7
使用计划:
硒 + phantomjs
一个介绍
自动预览html和截图有几个步骤:
1. 浏览器打开html
2. 浏览器页面截图
3. 截图保存到指定位置
最初,作者使用了这个实现方案:
(1)。使用webbrowser库打开默认浏览器,显示url
(2).使用PIL.ImageGrab库对屏幕截图
至此,笔者已经拿到了html预览截图,看起来一切顺利,但是接下来
发现了以下问题:
(1)。当你打开默认浏览器时,你不知道默认浏览器是什么,浏览器处于什么状态。
(2)。浏览器显示html时,会有一个显示打开浏览器,浏览器打开html动作。如果用户此时有其他动作,肯定会影响后续的截图。
(3).截屏,截取整个屏幕。截图中除了html页面主体外,还收录当前屏幕所收录的浏览器等所有元素,暴露用户隐私。
(4)。如果页面很大,页面会有上下翻页的效果,截图无法应对这种页面,截图只能看到部分报告。
基于以上问题,笔者放弃了这个看似简单有效的解决方案。从而
为该计划挖掘了一些深层次的要求:
(1)。打开浏览器必须隐式调用,用户看不到工具在做什么,以免误操作影响工具。
(2)。截图必须针对浏览器页面主体,保证没有其他多余信息,截取页面全图。根据这些要求,作者终于发现了selenium + phantomjs 经过一系列尝试。
python selenium:Python 是 selenium 的扩展,selenium 是一个浏览器自动化测试框架。selenium 库支持 selenium 中收录的大部分功能。
phantomjs:它是一个无接口、可编写脚本的 webkit 浏览器,python selenium 也提供了对 phantomjs 的支持。
接下来一切都很简单:
(1).安装python selenium库,建议使用pip快速安装最新版本
(2)。下载phantomjs.exe,添加到环境变量路径中,为了方便,可以直接放在python安装目录的根目录下
(3).写测试代码
简单解释一下代码:
fromselenium importwebdriver #从selenium库导入webdirver
brower=webdriver.PhantomJS() #使用webdirver.PhantomJS()方法新建一个phantomjs的对象,这里会使用到phantomjs.exe,环境变量path中找不到phantomjs.exe,则会报错
brower.get(url) #使用get()方法,打开指定页面。注意这里是phantomjs是无界面的,所以不会有任何页面显示
brower.maximize_window() #设置phantomjs浏览器全屏显示
brower.save_screenshot(picName) #使用save_screenshot将浏览器正文部分截图,即使正文本分无法一页显示完全,save_screenshot也可以完全截图
brower.close() #关闭phantomjs浏览器,不要忽略了这一步,否则你会在任务浏览器中发现许多phantomjs进程
执行完上面的代码,我们来看看截图效果:
以上对网页自动截图的Python实现的示例说明,均为小编分享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。