网络爬虫开发流程概括(纯文字)

概括性的介绍:

网络爬虫,总结起来,就是高效地收集互联网上的指定信息。 然而,不同的网站会有不同的保护措施,以及,不同的展示信息的方式。

这篇文章是第一篇,说的不多,是为了之后发文介绍如何开发一个自动化破解网站验证机制的程序(自动化生成爬虫代码文件)做铺垫。

爬虫的开发

主要就是针对三个点进行代码编写:

  1. 如何高效地发送可以拿到目标数据的请求
  2. 如何模仿真人操作可以堂而皇之地通过对方的验证机制获得数据
  3. 如何只截取目标信息而不要其他信息

开发的难度

高效发送请求

实现这个功能,还需要根据业务的具体需求和数据量级来决定。 如果业务多,量级大而且方便管理的,不用说,肯定是需要做分布式的。 如果是需要管理的业务不多的情况下,可以直接写独立的异步爬虫程序。

分布式爬虫 市面上的设计方案有很多,只要是对各自的需求指定的分布式方案,对于这个的实现,可以考虑爬虫平台。 独立的爬虫 也就是一个业务对应一个爬虫程序。
破解请求

前提:找到目标数据在哪一个url中,然后以这个url的http数据包作为目标开始破解(这一点也可以归为高效发送请求) 破解的核心就是如何构造一个身份,通过对方的验证,只要通过,对方就会返回有效数据 这个环节大体可以分为三个步(循环反复):

  1. 用这些 header cookie 以及 必要参数 发送请求
  2. 观察响应中是否存在我们想要的数据
  3. 去除 header cookie 以及 必要参数 中的部分键值对 这个步骤其实就是对键值对做组合。 到了这,对于一些没有太多防范措施对网站就能拿到数据了,然后现在越来越多的网站有了更复杂的验证机制(需要连续请求或者加密算法)。

比如:

  1. 链接对应一个唯一的 token,这需要分析从什么地方获得token(或者是其他相同功能的参数/键值对)。
  2. 参数(身份)激活,需要对另一个url发送请求后才能通过目标url请求对验证。
  3. 验证码
  4. js加密:内容加密/参数加密

等等 。。。。。。

并不是只有这些验证机制,反爬手段千千万,千奇百怪的验证机制就是爬虫工程师花费精力最多的地方。

截取数据(清洗规则)

当完成破解了之后,发送请求就可以得到网站的响应信息,然而,我们需要的信息只需要一部分,如果把不必要的信息入库就是资源浪费。因此,对响应内容做清洗就是十分必要的了。

响应内容的数据类型就是字符串(图片视频文件的二进制流对于爬虫业务来说很少,但也可以通过爬虫去下载)

一般来说,有目标数据的响应内容只有有两种类型:html 和 json

清洗的方式有三种:

  1. xpath
  2. json转hashmap,根据 key 找 value
  3. 通过正则表达式切出来

截取数据完成后,就是入库了 这些清洗规则,也都是通过人为定义

经验分享 程序员 微信小程序 职场和发展