对于爬虫,我们最关心的事情就是抓取的速度,而并发爬虫是最好提速的方式。而对于并发,golang有着天然的优势,通过goroutine我们可以轻松的写出并行爬虫来增加抓取速度。
chromedp
chromedp是一个golang编写的适用于Chrome DevTools Protocol的程序,通过它我们可以非常方便地操作浏览器,对于一些需要浏览器js解析的dom树,我们就可以使用chromedp来等待浏览器解析之后进行数据分析。
和phantomjs和selenium相比,chromedp不需要其它的依赖,一个可执行文件就可以直接调用访问无头chrome.
应为chromedp实现了chrome devtools protocol 协议,所以我们常用的点击,提交,上传,截图都是可以轻松使用代码来实现。
爬虫步骤
使用chromedp结合golang爬虫非常的方便,只要通过下面的步骤就可以轻松地抓取到任何我们可以访问的网页。
重新初始化user-agent导航到需要抓取的页面滚动页面到底部等待页面加载完全抓取重要信息
golang+chrome+google
我们知道chrome是谷歌研发的浏览器,而golang也是谷歌研发的编程语言,而两者的结合chromedp可以说是强强联合的产品,因此它的速度可以说非常快。
chrome的cdp协议为各个语言的驱动提供了规范的接口,而这也是目前各个公司开发产品所追求的,就像微软为编辑器提供的LSP协议,大大减少了不必要的重复开发,大大加速了程序的开发效率。