由于近期一个项目中需要采集一批数据进行分析,手头暂时并没有团队,所以干了一阵抓数据的工作。
为什么会采用puppeteer?
万事开头难,选择什么方式采集数据是项目的第一步。最开始的想法是抓包进行分析,但是目标网站数量过于庞大,自己一个人干显然有点扛不住。更何况,后续的分析和建模型才是项目的重头戏,想想还是前边做得简单一点,留点力气后边搬砖。
当然,最重要的原因其实是,某几个网站的反爬实在是看得头都大了。
所以,世上无难事,只要肯放弃。果断选择无头浏览器采集(事实上,也有很多针对无头浏览器的反爬机制,以后有机会再讲)
于是,就有以下如下几个选择:
phantomjs:据说已经不维护了,果断放弃
selenium:成熟稳定,支持更多语言,但是容易触发针对selenium的一些反爬机制
puppeteer:性能和灵活性较高,但需要nodejs开发
事实上,最开始的想法是selenium,毕竟更成熟一些。但是,在尝试用selenium控制chroomeheadless之后,比较容易被一些网站识别为爬虫。而尝试切换为firefox之后,却发现性能并不理想。
所以,最终决定采用puppeteer了。
不要使用pyppeteer!
由于项目的主体部分打算用python来写,再加上自己很少写nodejs,所以首先想到的是能否在python下实现。于是,网上各种不靠谱的技术博客纷纷推荐了py