编写一个爬虫类库——(二)准备

摘要:
首先,您需要选择数据捕获方法。在这里,我选择方法2在渲染后捕获数据。具体原因是,我在上一篇博客文章(4)中使用Chrome快速捕获数据——我对优势进行了比较分析。在其他方面,我基本上扼杀了发送HTTP请求的原始方式。您希望使用此协议驱动Chrome实现spider程序,然后将其封装为spider类库以使用其他开源协议解析器。

数据抓取方式选择:

要编写爬虫程序,首先需要选择数据抓取的方式,一般来说有如下两种:

  1. 对服务器发送Http请求,获取响应信息
  2. 利用浏览器发送请求,获取渲染完成后的数据

这里我选择方式2,具体原因我在之前的Blog文章使用Chrome快速实现数据的抓取(四)——优点中已经做过对比分析,简单来说就是使用浏览器除了性能开销较大外,其它方面基本上秒杀发送HTTP请求的原始方式。

浏览器接口:

对于浏览器的选择,我这里支持的是Chrome。Chrome提供了比较完善的开发接口Devtool Protocol,这个接口非常强大,基本可以实现自带的DevTool能实现的任何功能。该协议本身也有各种开源的实现,要想使用这个协议驱动Chrome实现蜘蛛程序,可以有如下方式:

  1. 直接编写协议解析程序,然后再封装为蜘蛛类库
  2. 使用其他的开源协议解析程序,然后再封装为蜘蛛类库
  3. 在别人封装好的蜘蛛类库(如puppeteer-sharp)上二次封装

由于该协议比较简单,实现起来不难,加上只需要实现需要的部分接口即可,工作量也不大。自己实现所需要的时间并不比理解别人的实现和踩坑的需要的多,因此我采用了自己实现的方式,也更加具有可控性。

Devtool Protocol:

Devtool Protocol的协议定义可以在Github上查看,我之前也写了几篇文章介绍过它,

主要是一个基于Websocket的协议,具体就不多介绍了,感兴趣的朋友可以看看我上面的文章或Chrome的官方文档

辅助工具:

之前开发Devtool Protocol一个主要的问题是,官网描述了一大堆api,往往不知道怎么组合这些api实现我们需要的功能,需要查阅大量文档。现在Chrome提供了一个辅助工具Protocol Monitor帮助我们简化这一过程

  编写一个爬虫类库——(二)准备第1张

当我们操作开发者工具时,相关的操作都转化成了可以通过Devtool Protocol的接口实现的脚本,类似于开发者工具的操作日志。只要我们先用开发者工具进行操作,然后分析Protocol Monitor记录的日志,就可以通过代码回放实现同样的效果,非常给力。  

               编写一个爬虫类库——(二)准备第2张

这个工具目前还是预览版,默认是没有开放的,可以通过如下步骤开启它。

免责声明:文章转载自《编写一个爬虫类库——(二)准备》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Laravel中的查询构造器Win7 下安装ubuntu14.04双系统下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用.Net访问Office编程接口

在这篇文章里面,我将向大家介绍如何在.Net中访问Office所公开的编程接口。其实,不管是使用哪种具体的技术来针对Office进行开发(比如VSTO,或者用C#编写一个Office Add-in,或者在一个WinForms程序中调用Office的功能,甚至在一个ASP.NET应用的服务器端启动一个Excel进程),只要是基于.Net平台,这篇文章所描述的...

Deepin Linux下安装安卓应用的各种方式

没事啥折腾 Deepin Linux 的应用商店里集成了挺多安卓应用 , 没有的就只能自己想办法了。 我主要使用这几个app , 飞书,邮箱大师,还有一些公司内部app。 网上 搜索了一下 ,有以下几种方式 。 从轻量到重量排。以下方式我自己都实际操作过了。好不好用就另一回事了。 archon shashlik xdroid anbox genymoti...

《软件概要设计说明书》

软件概要设计说明书 1.引言 1.1编写目的 根据我们在上课找教室就的尴尬状况,我们团队决定开发课堂派派软件。每当去上课找教室时,会很找不到教室,导致迟到,或者走错教室,我顿感忧伤,实难想到跑了如此远的路,浪费如此多的时间,还影响到正常的学习,我的心被刺穿了,我想能不能有一款软件可以让我不再如此浪费宝贵时间,能不能有一款软件让我在百忙之中还可以查看到教室...

微信小程序开发四:接口

4.1 网络 发起请求wx.request接口,用于发起 HTTPS 请求。一个微信小程序,同时只能有5个网络请求连接。上传下载wx.uploadFile接口,用于将本地资源上传到开发者服务器。如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。客户端发起一个 HTTPS POST...

微信小程序http接口封装怎么实现

微信小程序http接口封装怎么实现?微信小程序开发的编写,需要调用后端接口,经常要用到wx.request方法,所以就自己封装了一下,简化一下代码,如果能给大家提供帮助更好,我的项目后端是使用的Java SSM框架,wx.request的URL就是后端提供的接口。在封装的时候我在网上看了很多篇博客,90%以上的全都是直接在success回调函数中直接打印返...

oracle监听服务开启

输入命令netca即可开启oracle的监听服务 弹出对话框 选择监听服务配置,单击下一步 选择增加监听,单击下一步 监听的名字,默认即可,下一步 监听链接的协议,默认TCP协议即可,下一步 监听默认端口号1521即可,下一步,下一步会询问是否想在创建一个监听,我这里选择NO(一个监听即可),单击下一步,完成监听的配制。...