Python爬虫利器Pyppeteer框架简介
off999 2024-12-14 14:24 14 浏览 0 评论
Selenium作为一款知名的WEB自动化测试框架,因其支持绝大多数主流的浏览器,而且提供了丰富的API接口,能方便的通过程序控制来对WEB应用进行各项功能测试。当然很多时候他也作为爬虫工具来从网络上获取相关数据。但是selenium也有其一定缺点,被人吐槽比较多的就是其配置要求比较严格而且经常要更新内核驱动,但是最令人头疼的那就是作为单纯爬虫来说太"重"了,各类驱动、接口都加载上导致其运行速度较慢。
今天给大家推荐一款更为轻量化的自动化框架——Pyppeteer。它其实是Puppeteer的Python实现,它通过DevTools协议来控制Chromium浏览器来实现对页面逻辑的自动化控制,从而可以获取页面内的数据。
结合Puppeteer官网给的介绍简单地来说它相当于是帮你在后台打开了一个浏览器,打开你所需要访问的网页,你可以通过它提供的各种浏览器控制接口来控制它的行为,当然你也可以通过其提供的接口来获取它页面中的内容。另外要说明的是这个“在后台”的浏览器通常成为headless模式,你也可以通过启动参数配置来让它展示在前台来,这样可以在调试阶段实时看到一步步的你程序代码的执行情况。
安装Pyppeteer
pip install pyppeteer
Pyppeteer库可以直接用pip命令进行安装,这个是很方便的。但是前文提到过Pyppeteer其实是需要控制Chromium浏览器来实现自动化功能的,所以在安装好Pyppeteer库之后还需要我们安装Chromium浏览器,安装过程也是比较简单,只需要在控制台执行“pyppeteer-install”即可。对比Selenium来说还是方便了不少,起码不用再去关心driver啥的了。另外需要说明的是,Chromium浏览器其实也可以不需要手动去安装,第一次运行Pyppeteer程序时,如果检测到没有安装浏览器的话它会自动去下载的。
测试
官方给的测试代码如下,我稍许加了点注释:
import asyncio
from pyppeteer import launch
async def main():
browser = await launch() #打开浏览器
page = await browser.newPage() #打开一个新的页面
await page.goto('https://www.baidu.com') #打开一个网页地址
await page.screenshot({'path': 'example.png'}) #将页面截图
await browser.close() #关闭浏览器
asyncio.get_event_loop().run_until_complete(main())
是不是很简洁明了,和我们手动操作浏览器打开网页的操作逻辑很一致,所以这也是其魅力之一。
需要重点说明下的是Pyppeteer使用了asyncio库,顾名思义它是支持异步IO的,可以方便地应对高并发等场景需求,做爬虫的小伙伴是不是又眼前一亮了。同时也需要说明的是Pyppeteer库对Python版本要求是3.6+,所以小伙伴们使用前一定要注意下自己的Python版本。
Github项目主页:https://github.com/pyppeteer/pyppeteer
Pip项目主页:https://pypi.org/project/pyppeteer/
后续我会针对pyppeteer库的相关特性和用法进行介绍,感兴趣的小伙伴请关注我!
相关推荐
- 独家 | 5 个Python高级特性让你在不知不觉中成为Python高手
-
你已经使用Python编程了一段时间,编写脚本并解决各种问题。是你的水平出色吗?你可能只是在不知不觉中利用了Python的高级特性。从闭包(closure)到上下文管理器(contextmana...
- Python装饰器
-
Python装饰器是一种用于修改函数或类的行为的特殊语法。它们允许在不修改原始代码的情况下,通过将函数或类作为参数传递给另一个函数来添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返...
- 中高阶Python常规用法--上下文管理器
-
Python以简单性和通用性著称,是一种深受全球开发人员喜爱的编程语言。它提供了大量的特性和功能,使编码成为一种愉快的体验。在这些功能中,一个经常被新手忽视的强大工具是上下文管理器。上下文管理器是高...
- Python小案例67- 装饰器
-
Python装饰器是一种用于修改函数或类的行为的特殊语法。它们允许在不修改原始代码的情况下,通过将函数或类作为参数传递给另一个函数来添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返...
- python常用的语法糖
-
概念Python的语法糖(SyntacticSugar)是指那些让代码更简洁、更易读的语法特性,它们本质上并不会增加新功能,但能让开发者更高效地编写代码。推导式写法推导式是Python最经典的...
- python - 常用的装饰器 decorator 有哪些?
-
python编程中使用装饰器(decorator)工具,可以使代码更简洁清晰,提高代码的重用性,还可以为代码维护提供方便。对于python初学者来说,根据装饰器(decorator)的字面意思并不...
- python数据缓存怎么搞 ?推荐一个三方包供你参考,非常简单好用。
-
1.数据缓存说明数据缓存可以说也是项目开发中比不可少的一个工具,像我们测试的系统中,你都会见到像Redis一样的数据缓存库。使用缓存数据库的好处不言而喻,那就是效率高,简单数据直接放在缓存中...
- 用于时间序列数据的Graphite监视工具
-
结合第三方工具,Graphite为IT性能监控提供了许多好处。本文介绍其核心组件,包括Carbon、Whisper以及安装的基本准则。Graphite监视工具可实时或按需,大规模地绘制来自多个来源的时...
- Python3+pygame实现的坦克大战
-
一、显示效果二、代码1.说明几乎所有pygame游戏,基本都遵循一定的开发流程,大体如下:初始化pygame创建窗口while循环检测以及处理事件(鼠标点击、按键等)更新UI界面2.代码创建一个m...
- Python之鸭子类型:一次搞懂with与上下文装饰器
-
引言在鸭子类型的理念的基础之上,从关注类型,转变到关注特性和行为。结合Python中的魔法函数的体系,我们可以将自定义的类型,像内置类型一样被使用。今天这篇文章中,接着该话题,继续聊一下with语法块...
- Python必会的50个代码操作
-
学习Python时,掌握一些常用的程序操作非常重要。以下是50个Python必会的程序操作,主要包括基础语法、数据结构、函数和文件操作等。1.HelloWorldprint("Hello,...
- 一文掌握Python 中的同步和异步
-
同步代码(Sync)同步就像在一个流水线上工作,每个任务都等待前一个任务完成。示例:机器A切割钢板→完成后,机器B钻孔→完成后,机器C上色。在Python中,同步代码看起来像这样:im...
- python 标注模块timeit: 测试函数的运行时间
-
在Python中,可以使用内置的timeit模块来测试函数的运行时间。timeit模块提供了一个简单的接口来测量小段代码的执行时间。以下是使用timeit测试函数运行时间的一般步骤:导入...
- Python带你找回童年的万花尺
-
还记得小时候的万花尺吧?这么画:一点也不费脑筋,就可以出来这么多丰富多彩的复杂几何图形。具体而言,可以用万花尺玩具(如图2-1所示)来绘制数学曲线。这种玩具由两个不同尺寸的塑料齿轮组成,一大一小。小的...
- Python 时间模块深度解析:从基础到高级的全面指南
-
直接上干货一、时间模块核心类介绍序号类名说明1datetime.datetime表示一个具体的日期和时间,结合了日期和时间的信息。2datetime.date表示一个具体的日期。3datetime.t...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)