00 playwright 入门¶
在2010年左右,有一个支持包非常盛行,叫做selenium,可以可视化看到获取的过程,相较于其他的方法,其自动化程序更高,但是到2020年左右的时候,来了一个更效率的家伙,叫做playwright,这下直接让数据的获取变得更智能和可视化了,它直接将浏览器的内核打包进程序,也可以像VBA录制宏一直接写数据获取过程的代码,非常方便,话不多说,直接介绍!
一、获取与安装¶
主要要进行的一个是支持包的安装,另一个就是浏览器的安装,支持包安装直接通过pip语法就行:
site-packages下,比如我的是anaconda环境,下载后的支持包存放在D:\anaconda\Lib\site-packages\playwright\driver下,除了这一步,我们还需要安装一下浏览器内核,通过以下命令:
firefox 或者 webkit,也是支持的,唯一要注意的就是确保playwright所在的路径已经在你的环境变量中,如果没有的话,playwright就不能直接写,而是要写上完整的路径
二、基本使用方法¶
一般playwright都采用同步方式进行获取,我们下面进行简单的演示,sync_playwright 在这里就支持我们进行各种同步的获取,下面这段代码演示了我们进入豆瓣top250的页面,并打印页面标题,最后退出:
p.chromium.launch 这一句就是我们使用的浏览器内核,和我们第一步下载的是哪个有关系,如果你下载的是其他的,那对应做修改,headless=True代表无头模式打开,不显示浏览器,如果你想要使用playwright 之外的浏览器内核,可以通过以下方式进行自定义设置:
同时由于使用的是同步过程,因此在playwright 的使用中,一般不建议通过time.sleep来设置页面延时,其有自己内置的方法wait_for_timeout,如下方所示:
三、录制过程转为代码¶
在开始的时候,我就介绍了playwright具有自己的一套成熟的录制功能,我们只需要在命令行输入以下命令,就可以一边操作页面,右边的代码框会用代码的形式同步记录你的每一步操作,这样就很方便:
在代码的录制框中,可以记录到你对页面的点击,填充等大部分功能,但是也有一些部分是没法记录的,因此想要通过这个方法完全满足自己的要求,可能不大行,但是其提供了一种更便捷的代码编写方式。
四、代码记录和追踪功能¶
我们通过以下代码段来演示此追踪功能,注意如果要使用追踪功能,需要在page 创建前多用一个new_context的步骤,同时page 由new_context 创建,context.tracing.start 中主要是三个参数,分别用于记录:
screenshots=True,启用截图记录,在测试执行的每个步骤自动捕获屏幕截图snapshots=True,启用快照记录,记录 DOM 快照,包括页面结构、元素状态等sources=True,启用源代码记录,方便后续动作和代码一一对应
最后的stop中填入保存的路径即可,一般是一个zip文件
对于这个zip文件,我们由两种方法来读取,首先是通过pywright的官方网页(点击可跳转),将我们的文件拖入即可,另外一种方法就是通过命令行输入以下命令实现,当然需要保证你的记录文件路径正确(我这是同目录):
Action/Before/After切换查看动作 执行时,执行前,执行后 的页面状态。
在我们上面写的这一段代码中,就是访问了网站,然后在顶部搜索栏键入了 “星” 这个关键字,然后点击搜索,从上面的过程中清晰可以看见这三步动作的具体情况,可谓非常直观!
上面只是告诉你如何初步入门使用playwright,后面我会分享更多实用的干货