前言
在大数据时代,信息的采集是一项重要的工作。如果只靠人工采集信息,不仅低效繁琐,而且搜集成本很高。为此,网络爬虫技术就派上了用场。在一些场景中,如搜索引擎中爬取收录站点、数据分析与挖掘中对数据采集、金融分析中对金融数据采集等,该技术都应用广泛。
本文将带领大家了解网络爬虫及其应用,并深入理解网络爬虫的结构、核心协议及基础实现。
学习目标
- 能够了解爬虫所需技能与 Python 版本选择。
- 能够了解网络爬虫的应用和 Robots 协议。
- 能够掌握搜索引擎核心原理。
- 能够掌握快速爬取网页的示例代码。
所需技能与 Python 版本
在学习 Python 网络爬虫之前,先介绍一些必备基础技能以及本书选择 Python 3.X 版本的原因。
所需技术能力
使用 Python 语言进行网络爬虫开发,首先 Python 网络爬虫开发包含的内容较多,需要开发人员具备以下技术能力:
- 熟悉 Python 基础:掌握语法、数据结构、函数等。
- 对计算机网络有一定的了解:包括 HTTP/HTTPS 协议、DNS、TCP/IP 等(本文会有相应讲解)。
- 至少熟悉一种 Python 网络爬虫框架:如 Scrapy、Requests 等(本文有详细讲解)。
- 熟悉数据库、缓存、消息队列等技术的使用:用于数据存储和系统优化。
- 对 HTML、CSS、JavaScript 有一定的了解:用于解析网页结构和处理动态内容。
- 至少熟悉一种 IDE:推荐使用 PyCharm。
以上是在学习 Python 网络爬虫开发之前所需具备的一些技术能力,其中部分内容在本文中有所涉及,但大部分内容还是需要大家事先了解并掌握。
需要注意的是,安装第三方库和框架时,大部分都是在命令行窗口中安装,在 PyCharm 中的安装较为简单,因此不做详细讲解。
选择 Python 的原因
目前可以选择多种语言进行网络爬虫开发,如 Python、PHP、C# 等,选择 Python 有以下原因:
- 普及度高:Python 语言普及度越来越高,社区资源丰富。
- 库强大:Python 有非常强大的标准库和第三方库,比如目前流行的 Scrapy 爬虫框架。
- 简单易学:Python 语言简单易学,并且发展时间比较久,非常健壮优雅。
选择 Python 3.x 的原因
编写使用最新的 Python 3.X 主要有以下几个原因:
- 生命周期:Python 2.X 已停止开发,至 2020 年终止支持。
- 兼容性:Python 中的第三方库已基本支持 Python 3.X,满足开发需求。
- 效率:Python 3.X 的执行效率更高,且更符合现代编程规范。
初识网络爬虫
网络爬虫的概念
网络爬虫又名网络蜘蛛、网络蚂蚁、网络机器人等。顾名思义,网络爬虫可理解为在网络上的爬虫,按照一定的规则爬取有用信息并收录进数据库,该规则即网络爬虫算法。
在进行数据分析或数据挖掘时,通过网络爬虫可以根据不同需求有针对性地采集、筛选数据源。网络爬虫按照系统结构和实现技术,可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫和深层网络爬虫等。
1. 通用网络爬虫
通用网络爬虫(General Purpose Web Crawler)又称全网爬虫,其爬取的目标资源在整个互联网中。通用网络爬虫的爬取范围和数量巨大,对爬取速度和存储空间要求较高,而对爬取页面的顺序要求相对较低。在搜索引擎和大型网络服务提供商采集数据时,通用网络爬虫有很高的应用价值。
通用网络爬虫的结构大致可以分为 URL 队列、初始 URL 集合、页面爬取模块、页面分析模块、页面数据库几个部分。通用网络爬虫在爬取时会采取一定的爬取策略,常用的爬取策略有深度优先策略和广度优先策略。
- 深度优先策略:是指网络爬虫从起始页开始,依次访问下一级网页链接,处理完这条线路之后再转入下一个起始页,继续依次访问下一级网页链接。当所有链接遍历完后,爬取任务结束。深度优先策略比较适合垂直搜索或站内搜索,但爬取页面内容层次较深的站点时会造成资源的巨大浪费。


