今天就跟大家聊聊有关如何进行chrome中的动态爬虫分析以及环境搭建,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
创新互联公司长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为恭城企业提供专业的网站设计制作、成都网站设计,恭城网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
一:概述
动态爬虫和静态爬虫,n多年前web网站都是响应静态的html页面,也就是我们发生http请求到服务端,完后读取响应就可以获取到我们要的数据,但是随着web的发展,各种前端框架层出不群,之前的爬虫方案已经完全不适用,抓到的页面有可能是下面这个样子,如图:
这种情况就需要我们能动态去执行页面上的js,拿到最终的html。
动态渲染肯定离不开浏览器(除非自己去解析html,css,js),google开源了chromium浏览器,我们有自定义的需求可以更改它的源代码来实现,同时我们要和浏览器交互需要一个协议,google也把这个协议开源出来了,Chrome DevTools Protocol有了这个协议我们就可以去和浏览器打交道了。最后就是选择一门趁手的编程语言,由于是学习的原因,所以来个google全家桶吧,选择golang作为开发语言。开发库选择几乎是标配的chromedp,万事具备,最后再提一下 headless 是个啥,就是chrome的一种运行模式,我们平时都是需要有界面的使用,但是当爬虫使用的时候就不需要界面了,开发过程中也可以跑在非headless模式下,方便查看浏览器在干什么。
附:
cdp: https://chromedevtools.github.io/devtools-protocol/
chromium: https://www.chromium.org/
chromedp: https://github.com/chromedp/chromedp
二:开发环境
安装浏览器略过,安装完之后确保路径里能找到chrome,我的mac下 .zshrc 加入如下几行:
# chromealias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"alias chrome-canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary"alias chromium="/Applications/Chromium.app/Contents/MacOS/Chromium"
完后命令行执行,能看到版本信息就证明ok了
λ ~/ chrome --versionGoogle Chrome 84.0.4147.89
创建一个golang的项目(go mod),如下:
附上我的go.mod的依赖(大部分库是使用起来方便,比如读取配置文件的,命令行的,根据个人爱好来就行)
module github.com/anyeshe/caterpillargo 1.14require ( github.com/chromedp/cdproto v0.0.0-20200709115526-d1f6fc58448b github.com/chromedp/chromedp v0.5.3 github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/go-playground/universal-translator v0.17.0 // indirect github.com/gobwas/pool v0.2.1 // indirect github.com/gobwas/ws v1.0.3 // indirect github.com/leodido/go-urn v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/mapstructure v1.3.2 // indirect github.com/panjf2000/ants/v2 v2.4.1 // indirect github.com/pelletier/go-toml v1.8.0 // indirect github.com/spf13/afero v1.3.2 // indirect github.com/spf13/cast v1.3.1 // indirect github.com/spf13/cobra v1.0.0 github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.7.0 go.uber.org/zap v1.15.0 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect golang.org/x/text v0.3.3 // indirect gopkg.in/go-playground/validator.v9 v9.31.0 gopkg.in/ini.v1 v1.57.0 // indirect)
到现在准备的步骤就基本做完了,接下来该熟悉一下库和cdp了。
三:chrome开启协议监控
可以窗口可以查看开发者工具和chrome的交互过程,方便我们参考学习,打开方式如下:
首先打开chrome的开发者工具,如下:
完后点击这个设置,到下面的页面
勾选协议监控,完后再console中,记得显示一下 console drawer,如下
完后勾选下面的协议监控就能看见了
注:开发者工具其实就是基于cdp协议开发的
Method方法里面的东西对应的就是cdp协议官网里面的domain,如下:
看完上述内容,你们对如何进行chrome中的动态爬虫分析以及环境搭建有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
网站题目:如何进行chrome中的动态爬虫分析以及环境搭建
本文来源:http://lswzjz.com/article/joghep.html