第 1 篇
自己动手抓取数据
第 1 章
全面剖析网络爬虫
你知道百度、 Google 是如何获取数以亿计的网页并且实时更新的吗?你知道在搜索引
擎领域人们常说的 Spider 是什么吗?本章将全面介绍网络爬虫的方方面面。读完之后,你
将完全有能力自己写一个网络爬虫,随意抓取互联网上任何感兴趣的东西。
既然百度、 Google 这些搜索引擎巨头已经帮我们抓取了互联网上的大部分信息,为什
么还要自己写爬虫呢?因为深入整合信息的需求是广泛存在的。在企业中,爬虫抓取下来
的信息可以作为数据仓库多维展现的数据源,也可以作为数据挖掘的来源。甚至有人为了
炒股,专门抓取股票信息。既然从美国中情局到普通老百姓都需要,那还等什么,让我们
快开始吧。
4
1
1.1 抓 取 网 页
网络爬虫的基本操作是抓取网页。那么如何才能随心所欲地获得自己想要的页面?这
一节将从 URL 开始讲起 , 然后告诉大家如何抓取网页 , 并给出一个使用 Java 语言抓取网页
的例子。最后,要讲一讲抓取过程中的一个重要问题:如何处理 HTTP 状态码。
1.1.1
深入理解
URL
抓取网页的过程其实和读者平时使用 IE 浏览器浏览网页的道理是一样的 。 比如 , 你打
开一个浏览器,输入猎兔搜索网站的地址,如图 1.1 所示。
图 1.1 使用浏览器浏览网页
“ 打开 ” 网页的过程其实就是浏览器作为一个浏览的 “ 客户端 ” ,向服务器端发送了
一次请求,把服务器端的文件 “ 抓 ” 到本地,再进行解释、展现。更进一步,可以通过浏
览器端查看 “ 抓取 ” 过来的文件源代码。选择 “ 查看 ” | “ 源文件 ” 命令,就会出现从服务
器上 “ 抓取 ” 下来的文件的源代码,如图 1.2 所示。
在上面的例子中 , 我们在浏览器的地址栏中输入的字符串叫做 URL 。 那么 , 什么是 UR L
呢?直观地讲, URL 就是在浏览器端输入的 http://www.lietu.com 这个字符串。下面我们深
入介绍有关 URL 的知识。
在理解 URL 之前,首先要理解 URI 的概念。什么是 URI ? Web 上每种 可用的 资源 , 如
HTML 文档 、 图像 、 视频片段 、 程序等 都 由一个通用资源标志符 (Universal Resource Identifier
,
URI) 进行定位。
URI 通常 由三部分组成: ① 访问资源的命名机制 ; ② 存放资源的主机名 ; ③ 资源自身
的名称,由路径表示。 如下面的 URI :
http://www.webmonkey.com.cn/html/html40/
第 1 章 全面剖析网络爬虫
5
图 1.2 浏览器端源代码
我们可以这样解释它 :这是一个可 以 通过 HTTP 协议访问的资源,位于主 机
www.webmonkey.com.cn 上,通过路径 “ /html/html40 ” 访问。
URL 是 URI 的一个子集 。 它 是 Uniform Resource Loca tor 的缩写 , 译为 “ 统一资源定位
符 ” 。 通俗地说, URL 是 Internet 上描述信息资源的字符串,主要用在各种 WWW 客户程
序和服务器程序上 , 特别是著名的 Mosaic 。 采用 URL 可以用一种统一的格式来描述各种信
息资源,包括文件、服务器的地址和目录等。 URL 的格式由三部分组成:
�
第一部分是协议 ( 或称为服务方式 ) 。
�
第二部分是存有该资源的主机 IP 地址 ( 有时也包括端口号 ) 。
�
第三部分是主机资源的具体地址 , 如目录和文件名等。
第一部分和第二部分用 “ :// ” 符号隔开,第二部分和第三部分用 “ / ” 符号隔开。第一
部分和第二部分是不可缺少的,第三部分有时可以省略。
根据 URL 的定义,我们给出了常用的两种 URL 协议的例子,供大家参考。
1 . HTTP 协议的 URL 示例
使用超级文本传输协议 HTTP ,提供超级文本信息服务的资源 。
例: http://www.peopledaily.com . cn/channel/welcome.htm
其计算机域名为 www.peopledaily.com.cn 。超级文本文件 ( 文件类型为 . html) 是在目录
/channel 下的 welcome.htm 。这是中国人民日报的一台计算机。
例: http://www.rol.cn.net/talk/talk1.htm
其计算机域名为 www.rol.cn.net 。超级文本文件 ( 文件类型为 .html) 是在目录 /talk 下 的