使用Python脚本对当前操作界面进行截图

2025-05-29 11:20:06

phantomjs实现了一个无界面的浏览器。虽然没有界面,但dom渲染、js运行、网络访问等功能都很完备,在页面抓取、页面输出、自动化测试等方面有广泛的应用。Python执行爬虫任务时想要对界面进行截图,利用phantomjs很容易就能做到。

使用Python脚本对当前操作界面进行截图

一、安装

1、从网上下载phantomjs,解压到任意目录,并将包含phantomjs.exe的目录添加到系统路径就可以用了。

二、使用说明

1、在phantom运行时,会向当前代码运行环境注入phantom对象,它的功能是定义和控制phantom运行环境的参数和流程。phantomjs执行具体的文件方式:

使用Python脚本对当前操作界面进行截图

2、获取传给本JS程序参数有两种方式:

使用Python脚本对当前操作界面进行截图

3、phantomjs ./test.门钙蹲茌js http://xxx 这句语句,通过phantom.args,我们能得到的参数坐逃缥卯列表为["http://xxx"],而通过system.args则得到["./test.js", "http://xxx"]这样的参数列表。差异就在于是否包含当前脚本名称。

4、通过phantom.scriptName这个API可直接获取脚本名称。退出程序,可以设置一个退出代码,默认是0。

使用Python脚本对当前操作界面进行截图

三、web page模块

1、web page模块的功能是处理具体的页面。使用时需要引入模块,并创建实例:

使用Python脚本对当前操作界面进行截图

2、页面内容相关的APIpage.contentString:获取或设置当前页面的html。page.urlString:只读,获取当前页面的url。

使用Python脚本对当前操作界面进行截图

3、对于page打开的页面,往往需要与其进行一些交互。page.evaluate()提供了在page打开页面的上下文执行function的功能。如下例:

使用Python脚本对当前操作界面进行截图

4、page.evaluate()接受迷撞笸痉两个参数,第一个是必需的,表示需要在page上下文运行的函数fn;第二个是可选的,表示需要传给fn的参数param。对于整个phanto罪焐芡拂m进程而言,page.evaluate()是跑在一个沙盒中,fn无法访问一切phantom域中的变量;同样page.evaluate()方法外部也不应该尝试访问page上下文中的内容。如果两个作用域需要交换一些数据,只能依靠param和return。

5、page.render()能够把当前页面渲染成图片并输出到指定文件中。输出的文件格式由传入的文件扩展名决定,目前支持PNG、JPEG、GIF、PDF。

使用Python脚本对当前操作界面进行截图

四、使用phantomjs截图注意事项

1、使浏览器足够大,这样底部就显示了,可以设置viewPortSize很大:page.viewportSize = {width: 4800,height: 8000};

2、通过BOM方法操作滚动条,可以把滚动条滚动到一个很大的值,使页面展示完整,如:window.scrollTo(0,10000);

3、滚动到适应的高度:window.document.body.scrollTop = document.body.scrollHeight;

4、页面请求的资源,如图片、异步cgi、js等,返回的时间以及执行的长短都是不确定的,如果截图过早,可能很多空白区域,因此需要定时截图,在打开页面后,使用setTimeout来延迟截图:

使用Python脚本对当前操作界面进行截图
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢