已完结的Puppeteer学习经验与踩坑
关于这个西瓜皮
其实不难猜,和爬虫挂钩的那无非就是无头浏览器。
Puppeteer已经是蛮成熟的一个无头了,几乎能满足开发的所有需求,而且该项目由Google团队开源长久维护,有着丰富的社区。(简而言之,你踩到的坑,别人都踩到过,如果!!哪一天你踩到了一个没有人踩到过得坑,那么务必来找我,哈哈哈哈哈)
玩这个东西也挺久的了,在一些开源项目里有做过很多贡献,其中不乏有借了Puppeteer的光啊。
踩坑笔记
这里主要记录了,日常开发以及团队项目开发期间遇到的一些问题,所以这篇文章将处于长期更新维护的状态。
如有问题,欢迎底下评论区进行提问,博主24H在线,不出意外的话5分钟内会有回复的。
CentOS 的一些特殊配置
报错:
1 | /../node_modules/puppeteer/.local-chromium/linux-515411/chrome-linux/chrome: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory |
按照他的意思是没有找到相关依赖库,这玩意简单了。
CentOS解决方法:
请求时出现 net::ERR_TUNNEL_CONNECTION_FAILED
复现:
- 可用代理(测试完整)
- 完整请求头
测试上百次依旧报错 net::ERR_TUNNEL_CONNECTION_FAILED
已查阅:
Windows10错误:https://answers.microsoft.com/en-us/windows/forum/all/getting-error-errtunnelconnectionfailed-while/f8d8b61f-a875-4d57-8a4f-3427a0e783c6
Chrome错误:https://www.techbout.com/err-tunnel-connection-failed-error-in-chrome-39692/
Puppeteer错误:https://vi.sandiegocsta.org/488310-puppeteer-chromium-proxy-err-tunnel-PDNJOM
Puppeteer错误:https://www.xknote.com/ask/60ef8c45582ca.html
最后。
在Puppeteer的issues中找到相关记录,维护团队回复:Hey @Yom92 That error is coming straight from Chromium. There is not much we can do on our side.
具体参见:https://github.com/hardkoded/puppeteer-sharp/issues/1202#issuecomment-509187809
要而论之。
在需要代理的无头请求时,应当注意Chromium的特性,那么就没有其他的替代方案了。
对!我还没想到,如果你有,麻烦大佬下方评论区畅所欲言。
实现
无头的作用想必大家都有所了解了,那么他能用来做些什么呢?
博主在这里尝试了几个简单的请求,不同于axios的是,Puppeteer可以等待Dom和页面加载。
博主常用该类来进行SEO词尾优化,提高命中率。
原神官网抓取和操作
暂无更方便的获取cookie的办法,所以只能要求用户自己获取米游社的cookie,在请求的时候puppeteer携带cookie就能完成,角色查询,签到等任务。
相关项目:
剖析一下机器人即可,很巧妙的利用了无头进行图片渲染👍
无头渲染图片
作为Canvas的替代方法,顺便一提,应该没有人喜欢用Canvas去渲染图片吧?那叫一个折磨啊,H5不比画板香吗?