zoukankan      html  css  js  c++  java
  • 编写一个爬虫类库——(二)准备

    数据抓取方式选择:

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

    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帮助我们简化这一过程

      

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

                   

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

  • 相关阅读:
    jquery实现选项卡(两句即可实现)
    常用特效积累
    jquery学习笔记
    idong常用js总结
    织梦添加幻灯片的方法
    LeetCode "Copy List with Random Pointer"
    LeetCode "Remove Nth Node From End of List"
    LeetCode "Sqrt(x)"
    LeetCode "Construct Binary Tree from Inorder and Postorder Traversal"
    LeetCode "Construct Binary Tree from Preorder and Inorder Traversal"
  • 原文地址:https://www.cnblogs.com/TianFang/p/11143282.html
Copyright © 2011-2022 走看看