爬虫实战:从数据到产品
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 基础知识

1.1 什么是爬虫

爬虫是“网络爬虫”的简称,在百度百科上网络爬虫的定义是:

网络爬虫(又被称为网页蜘蛛、网络机器人,在 FOAF 社区中,经常被称为网页追逐者),是一种按照一定的规则,自动抓取互联网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

我们最常接触的网络爬虫是百度、搜搜、谷歌(Google)等公司的搜索引擎,这些搜索引擎通过互联网上的入口获取网页,实时存储并更新索引。搜索引擎的基础就是网络爬虫,这些网络爬虫通过自动化的方式进行网页浏览并存储相关的信息。

在互联网的早期,大多数网站都是静态网站,没有大量的图片,更没有大量视频素材,那时的网络爬虫只要能处理静态的HTML网页。随着互联网内容的不断丰富,搜索文字、图片,甚至视频都成了最基本的需求。

技术上,AJAX、单页面应用、HTML5等网页技术的发展淘汰了单纯的静态页面爬虫,类似搜索引擎的通用爬虫能够加载并处理好动态页面已成为基本的要求。另外,由于过于复杂的动态网页会给搜索引擎带来很大的困扰,因此大多数网站会在动态网站的基础上,通过SEO(Search Engine Optimization,搜索引擎优化)对部分想要被搜索到的信息引入静态网页,以便能够更方便地被搜索引擎搜索到(进而容易被普通用户搜索到)。

近几年,互联网开始朝着移动应用的方向发展。海量的信息从移动端生产并消费,遗憾的是,搜索引擎通常并不能触及这些信息。例如,抖音等短视频APP中的视频,目前还不能在百度等搜索引擎搜索到;淘宝的商品信息也无法在常规搜索引擎中搜索到(只能在淘宝的APP中搜索到),等等。由于这些信息无法通过网页搜索到,因此搜索引擎不适合解决此类问题。在商务上,厂商之间可以通过合作的方式对移动应用中的内容进行查询,例如,搜狗就能搜索到微信公众号的信息。在技术上,可以开发定向爬虫抓取页面信息,再对其中的数据进行处理,例如各种比价网站收集价格信息的过程等。

定向爬虫

定向爬虫抓取的是特定的信息,它获取信息的方式多种多样,存储及分析的方式也随着应用不同而不同。信息既可能存在于网页之中,又可能存在于各种移动端应用中。

对于定向的静态网页的抓取,我们会分析出需要抓取的网站,然后根据链接的内容、关键字等信息决定下一个网页的抓取。这种网页的抓取极具针对性,只需找到遍历的方式方法即可。通用的爬虫框架能够减轻一部分开发工作,但自己针对特定需求写一个专用的爬虫也不难。

在丰富的移动资源中存在大量的有用信息,并且绝大多数应用都采取了前后端分离的架构设计。前端调用后端的API,后端会为前端提供结构化或者半结构化的数据(一般是JSON格式),所以通过分析数据来源的API,可以模拟调用这些API来获取信息。结构化、半结构化的数据非常有利于数据处理,这也给数据存储、处理、分析带来了很大的便利。