Puppeteer入门教程
简介
这篇文章介绍Puppeteer相关知识,并编写了两个简单的使用Puppeteer的例子。包括从入门的介绍到功能的实现,教的很细,包会。
写在前面
所有的爬虫都要注意遵守相应的法律法规,访问速度不可以过快,过大的流量可能导致服务器故障。对于Puppeteer而言最佳的方案应该是完全拟人的速度或比真实用户稍快一些,可以添加一些等待函数。
如果需要更快的速度可以考虑使用不同的ip和客户机。
Puppeteer官方文档
官方文档链接: Puppeteer
中文官方文档链接: Puppeteer官方中文文档
Puppeteer简介
Puppeteer是一个由Google开发的Node.js库,用于控制Headless Chrome或Chromium浏览器,它广泛用于网页爬取、自动化测试和生成页面截图等任务。
这个工具对于很多人来说也许很陌生,但selenium相信更多人应该听说过,Puppeteer和selenium其实特别相似,都是控制浏览器进行一些指定的操作,如点击,移动鼠标,按下键盘等。
与selenium最大的不同在于,Puppeteer是基于浏览器开发者工具进行的操作,而selenium是基于webdriver。这也决定了Puppeteer更不容易被反爬工具所识别,因为它的操作在服务器端与用户的操作无异,而selenium的每一步操作都会被展示为webdriver。
当然Puppeteer能做的也不只是爬虫,由于它能在浏览器模拟用户的操作,因此也可用于一些web界面或后端接口的调试,本篇文章着重介绍爬虫知识。
什么情况下应该使用Puppeteer?
我认为爬虫大致可以分为几类
1.自己或所在公司的网站
这一类通常是自己的或公司或内部的一些网站或信息,因为种种原因不能直接获取,需要编写爬虫,且目标服务器能承受爬取的流量。那么使用 Python 的request库或 curl 命令即可,这样的速度相较于Puppeteer快的多得多,如果是这种情况不建议使用Puppeteer。
2.公开的网站,没有严格的反爬机制,同步加载的页面
这一类应该是最常见的需求,毕竟大多数公开的网站不会设置太严格的反爬机制,有很多直接request就可以,少部分简单的反爬只要有user-agent也能正常获取信息,这种情况下更建议使用 Python 的request库或者 js 的axios库,这些库能获取指定链接的内容,后续可以通过其他工具解析。因为这些库并不需要渲染页面,对资源占用更小,速度也更快。此外,这类库的逻辑也相对更简单,代码更容易编写。
3.公开的网站,有反爬机制或异步渲染的页面
这是非常建议使用Puppeteer的场景,比如html和数据是分两个请求发送的,如果只使用request请求数据,可能会被判断为机器人导致被封禁。又比如或者页面是异步加载,使用request可能只能获得其中一个,只拿到了html没拿到数据那可就白爬了。但Puppeteer能帮助我们获取到Dom树(也就是最终加载完的html),我们可以解析Dom树,这样就能避免数据不全的问题。
对于反爬机制而言,Puppeteer也提供了更丰富的绕过机制的可能性,因为它完整地渲染了页面,也提供了各种鼠标和键盘事件,一些普通的机器人验证还是很容易绕过的。复杂的机制也可以通过较难的函数破解。
4.非公开的网站
不可以爬!不可以爬!!例如学校存储成绩的后台,公司的业务管理后台等,可以通过一些手段伪造验证进入,但是爬的话你和牢饭仅几步之隔。爬虫学得好,牢饭吃到饱就是这么来的。因为它非公开,访问记录还是很容易通过日志查出来的。
配置环境
安装nodejs
nodejs的安装包在nodejs官网就能找到,推荐安装左侧的Recommend For Most Users版本,因为最新版本可能会有一些BUG,而且我们目前的需求并不需要特别高的版本。

安装nodejs并不难,一直Next即可

安装完成

在cmd中

本文详细介绍了Puppeteer的基本概念、用途,以及如何在项目中配置环境并实现基础功能,如爬取网页、截图和模拟用户操作,特别强调了Puppeteer在处理有反爬机制或异步渲染页面时的优势。
2554






