基于pptr的puppeteer和chrome爬虫的方案一般来讲有如下几个方案
- 本机(无法大规模)
- 使用PAAS,比如apify但是费用比较高。
- 自己搭建apify的平台?怎么办?
研究一下apify
a) actor其实就是你代码
b) task其实就是把你的代码打包docker的image
c) run其实就是run一次这个docker image
所以重点是,怎么把code打包成docker然后部署到linux服务器上,当然如果不用docker也可以,但是如何把chromium安装到linux上面比较难,因为chrome本事需要绑定很多东西(二进制的)才能用。文档来源: developers.google.com/web/tools/p…
当然docker的好处是多多的。这样打包后,可以用在aws的lamda上面,当然如果你不用lamda,可以用GCF(goolg自己的linux绑定了chromiumum)直接运行pptr。
下面考虑。
1. 如何打包
I) google给的方案 developers.google.com/web/tools/p…
如果不行的话,有人做了二进制,如下:
github.com/alixaxel/ch… 体积比较小,可以直接用在lamda上面。非常不错。
II) 用apify的打包如下
代码上面有dockerfile的例子
2. 如何运行docker
I) apify的方案
直接把运行的代码也一起打包,包括设置的input.json参数,即一个task;具体见 github.com/VaclavRut/a…
运行一次结束后可以再运行,直接docker run --name即可;无法提供参数。
II) google的方案
单独打包chrome,同时暴露端口,方便把数据传输给docker内部的,这样pptr直接探囊取物去调用chrome,例子
这样做的好处是:
可以通过docker外边传输代码(通过暴露的端口)给pptr去执行,这样实现了http云操作!!操作的是浏览器噢!!
神奇吧?!看这里
云浏览器就是这样诞生的!!比如 browserless.io
关于pptr和chrommuim的全部内容,你看我这个一个文章就够了!~~