第7章 Web爬虫

Web无疑是当前最大的非结构化文本的存储库,如果知道如何对其内容进行爬取,就可以获得所有想要的数据。正因为如此,Web爬取(web crawling)对于NLTK的爱好者来说是一项很值得学习的技术,而如何从Web中获取相关的数据正是本章所要介绍的主要内容。

本章将会用一个叫做Scrapy的神奇的Python库来编写一个Web爬虫。本章会为你详细介绍该库所有可用于配置的各种不同设置信息。还会编写一些最常见的蜘蛛策略以及多个与之相关的用例。另外,由于Scrapy库的使用需要我们对Xpath、信息爬取,信息检索等与Web信息操作相关的概念有一个基本的了解。所以本章也会对这些主题进行一定的探讨,以确保读者在具体实现相关应用之前,能了解其在实践方面的相关知识。总而言之,在阅读完本章之后,希望读者能对Web爬虫有个更好的了解,并能掌握以下内容。

  • 如何用Scrapy库编写出属于自己的爬虫。
  • Scrapy库的所有主要功能。

Google无疑是当前最大的网页爬虫之一,它爬取的对象是整个万维网(WWW)。Google必须对Web中现存的每一个页面进行遍历,并检索/爬取其所遍历到的全部内容。

Web爬虫是一种系统性逐页浏览Web中的页面,并对其内容进行检索或爬取的计算机程序。而且,Web爬虫还可以从已被爬取过的内容中解析出接下来要访问的URL集。因此,如果这些程序进程可以面对整个Web无限期地运行下去,是可以爬取到所有网页的。另外,Web爬虫也被叫作蜘蛛、机器人和检索器,它们只是同一事物的不同名称[1]

在编写第一个爬虫程序之前,有那么几个要点需要先思考一下。以目前的技术来说,在用Web爬虫对网页进行遍历之前,应该要先决定需要选取什么类型的内容,要忽略的又是什么内容。例如对于搜索引擎这样的应用来说,通常应该要忽略掉所有的图像、js文件、css文件及其他非HTML文件,将注意力集中在那些可被索引并且可被搜索的HTML内容上。在某些信息提取引擎中,还需要选取特定的HTML标签或网页中特定的部分。另外,如果想要执行递归式爬取操作的话,还需要提取其中的URL。这就进入了爬取策略这一话题中来。在这一话题中,需要决定递归策略是深度优先还是广度优先。可能会想要追踪下一网页上的所有URL,那么只要采用深度优先策略来获取这些URL即可。也可能会想前往下一网页中的所有URL,这样的话只需一路递归下去即可。 ...

Get NLTK应用开发指南 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.