第11章 数据海洋和爬虫
  数据分析模块是股神1.0的大脑,除了这个大脑之外它还需要其他几个关键性模块。既然做大数据分析,那么这个数据来源就需要有一个功能模块来解决,它专门负责数据的收集。
  这个数据收集模块就像是股神的手脚,负责从网络上收集对应的数据,这个模块一个关键的组成部分就是爬虫。
  国际互联网发展到今天,变成了体系庞杂内容浩繁的网状系统,这个系统上的信息节点规模数以十亿计,这些节点可能包括台式机、笔记本、服务器、大规模群组、智能手机、平板、智能导航终端、各类信息采集终端、信息发射终端等等等等。
  只要能够链接上互联网,能够与互联网进行数据交互的,都可以视为一个信息节点,比如遍布城市的各类监控探头,各类通讯基站,严格来说都属于节点之一。
  这些节点为互联网提供的数据类型也各种各样,有文字,有数据,有图表,有文档,有视频,有音频,有数据库;它们的表现形式各式各样,有通用格式,有专用格式;所有这些信息加在一起,共同组成了沉积在国际互联网中浩瀚的数据海洋。
  这个数据海洋是动态的,它时刻处在在运动和更新之中,就好像各种洋流和浪涛一样,永不停息。
  整个数据海洋分散在无数个信息节点之中,这些信息节点被各种通讯协议链接起来,让它们可以相互通讯。各种通讯协议中,有我们最熟悉的一种,就是url,也就是我们总会遇到的网站链接。
  如果将整个数据海洋比喻成我们的地球,那么每个数据节点就是一个房间,而节点内的数据信息就是我们人类,所有的信息节点组合起来,构成了地球上的无数个城市,无数个大厦,无数个房屋。
  各种各类的数据链接模式,就是承载人们出行的道路,而url不过是道路的一种,算是各个城市之间,各个主要的商业大厦之间互通的铁路和公路。它主要出现在公共服务器之间,就是说只要有了url,理论上来说它对所有数据访客都是开放的,任何人都可以抵达这个服务器,只不过它有没有门禁就是另外一回事了。
  既然有公共空间,那相对应的肯定有非公共空间,除了url,还有很多链接模式,这些链接模式里,信息节点就像是私人住宅或者军事禁区一样,它并不是开放给公众的,虽然它同样存在于数据海洋中,但你是无法随便访问的。
  当面对如此庞大浩繁的数据海洋时就存在一个问题了,世界这么大,我该如何找到目标,比如我想找感冒药相关的数据信息,我该怎么办?
  正是这种需求催生了搜索引擎,搜索引擎可以帮助你快速找到目标,它就像一个找路指南一样,你只要告诉它想去哪,这个目的地大概什么特征,它就会帮助你找到无数个可能合适的目的地,并且把对方的url提供给你。
  搜索引擎每天的访问量都是海量的,每一秒同时并发的搜索请求都是数以十万计的,在这么多请求面前,如果来一个请求它搜一遍互联网,这肯定是不现实的,不仅速度慢效率低,而且仅仅这类搜索请求就足让整个国际互联网陷入拥堵状态。
  为了解决这个问题,搜索引擎就有了它特有的工作模式,它先尽可能多的将数据海洋里的信息全部找出来,然后存储在自己的服务器群组中,一旦有了搜索请求,它只要在自己的服务器里进行检索就行了。
  而帮助搜索引擎完成找这个动作的就是爬虫。
  因为国际互联网中的信息节点都是相互关联的,是网状联系的,每个节点上都会有很多个url。所以爬虫的工作模式就是遍历,当它开始工作时,它会以一个信息节点为起点,然后挨个访寻与这个节点相连的所有节点,当下一层节点还有url链接时,它就不断访问下去,直到将所有url遍历一次才算完。
  因为整个互联网的网状结构,使它具备网状互通性,所以等爬虫将所有url遍历了,一般来说它就已经将整个国际互联网所有链接全部访问了一遍,这注定是一个比环球旅行更加令人叹为观止的行为。
  而莫回既然想弄这个股神1.0,他想要搜集海量数据,那么他要做的事情其实和搜索引擎要做的事情很像,只不过搜索引擎是所有信息都要搜集,而莫回只需要关注股票相关的信息就行了。
  这样的话,莫回的爬虫就必须在具备遍历能力的同时,还得具备筛选的能力。
  遍历的能力解释起来很简单,就是你不能走回头路和冤枉路,游历过的url就犯不着再走第二遍了。一条新的url被发现,首先需要判断这条url是否已经走过,其次需要判断这条url被安排在什么次序去走。一个是重复性问题,一个是最优化问题,这就需要独特的遍历算法来解决。
  而筛选功能就是通用爬虫和专用爬虫之间的主要区别,莫回的爬虫需要具备一定的识别能力,能够辨别某个url中的内容是否具备相关性,如果不具备那么就跳过,如果具备就将其中的内容复制回来待用。
  这个筛选功能同样需要一大堆的算法来解决,不仅如此,它还需要具备自然语言处理能力,就是说它得具备对语言文字的理解和解析的能力,它得能够识别哪些文字内容是与股票相关的,哪些是无用的。
  仅仅识别文字还是不够的,它还得能够识别其他格式的数据,比如它得能够识别图案,像是股票相关的各种k线图、柱状图之类的,爬虫必须能够将其与风景画或者自拍照区别开。
  除了图片,其他的像是视频、音频、各类数据库之类的,爬虫都需要一一辨别出来,确定是否属于相关内容。
  这里面将会有无数个技术难题需要解决,如果这个工作让莫回一个人来完成,几乎是不可想象的。