这是本文的目录
前言
在大数据时代,信息的采集是一项重要的工作,如果只靠人工采集信息,不仅低效烦琐,而且搜集成本很高。为此,网络爬虫技术就派上了用场,在一些场景中,如搜索引擎中爬取收录站点、数据分析与挖掘中对数据采集、金融分析中对金融数据采集等,该技术都应用广泛。下面将带领大家了解网络爬虫及其应用,并了解网络爬虫的结构。(文末送福利)
所需技能与Python版本、初识网络爬虫、搜索引擎核心、快速爬取网页示例
学习目标
(1)能够了解爬虫所需技能与Python版本
(2)能够了解网络爬虫的应用和Robots协议
(3)能够掌握搜索引擎核心
(4)能够掌握快速爬取网页示例
所需技能与Python版本
在学习Python网络爬虫之前,先介绍一些必备基础技能以及本书选择Python3.X版本的原因。
所需技术能力
使用Python语言进行网络爬虫开发,首先Python网络爬虫开发包含的内容较多,需要开发人员具备以下技术能力:
(1)熟悉Python基础。
(2)对计算机网络有一定的了解(本书也有相应的讲解)。
(3)至少熟悉一种Python 网络爬虫框架(本书有详细讲解)。
(4)熟悉数据库、缓存、消息队列等技术的使用。
(5)对HTML、CSS、JavaScript有一定的了解。
(6)至少熟悉一种IDE(本书使用 PyCharm)。
以上是在学习Python网络爬虫开发之前所需具备的一些技术能力,其中部分内容在本书中有所涉及,但大部分内容还是需要大家事先了解并掌握。
需要注意的是,本书在安装第三方库和框架时,大部分都是在DOS命令行窗口中安装,在PyCharm中的安装较为简单,因此不做详细讲解。
选择Python的原因
目前可以选择多种语言进行网络爬虫开发,如Python、PHP、C#等,本书选择Python有以下原因:
(1)Python语言普及度越来越高。
(2)Python有非常强大的标准库和第三方库,比如目前流行的Scrapy爬虫框架。
(3)Python语言简单易学,并且发展时间比较久,非常健壮优雅。
选择Python3.x的原因
编写使用最新的Python3.X主要有以下几个原因:
(1)Python2.X已停止开发,至2020年终止支持。
(2)Python中的第三方库已基本支持Python3.X,满足开发需求。
(3)Python3.X的执行效率更高。
初识网络爬虫
网络爬虫的概念
网络爬虫又名网络蜘蛛、网络蚂蚁、网络机器人等,顾名思义,网络爬虫可理解为在网络上的爬虫,按照一定的规则爬取有用信息并收录进数据库,该规则即网络爬虫算法。
在进行数据分析或数据挖掘时,通过网络爬虫可以根据不同需求有针对性地采集、筛选数据源。网络爬虫按照系统结构和实现技术,可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫和深层网络爬虫等。
1. 通用网络爬虫
通用网络爬虫(General Purpose Web Crawler)又称全网爬虫,其爬取的目标资源在整个互联网中。通用网络爬虫的爬取范围和数量巨大,对爬取速度和存储空间要求较高,而对爬取页面的顺序要求相对较低。在搜索引擎和大型网络服务提供商采集数据时,通用网络爬虫有很高的应用价值。
通用网络爬虫的结构大致可以分为URL队列、初始URL集合、页面爬取模块、页面分析模块、页面数据库几个部分。通用网络爬虫在爬取时会采取一定的爬取策略,常用的爬取策略有深度优先策略和广度优先策略。
深度优先策略是指网络爬虫从起始页开始,依次访问下一级网页链接,处理完这条线路之后再转入下一个起始页,继续依次访问下一级网页链接。当所有链接遍历完后,爬取任务结束。深度优先策略比较适合垂直搜索或站内搜索,但爬取页面内容层次较深的站点时会造成资源的巨大浪费。
广度优先策略按照网页内容目录层次深浅来爬取页面。首先被爬取的是处于较浅目录层次的页面,当爬取完同一层次的网页后,爬虫继续爬取下一层。广度优先策略能够有效控制页面的爬取深度,避免遇到无穷深层分支时无法结束爬取的问题,实现方便,无须存储大量中间节点,其缺点是需较长时间才能爬取到目录层次较深的页面。
2. 聚焦网络爬虫
聚焦网络爬虫(Focused Crawler)又称主题网络爬虫,顾名思义,聚焦网络爬虫是指按照预先定义好的主题,有选择性地进行网页爬取的一种爬虫。与通用网络爬虫相比,聚焦网络爬虫只需爬取与主题相关的页面,大大节省了爬虫爬取时所需的硬件和网络资源,但聚焦网络爬虫不适合大范围爬取。
聚焦网络爬虫相比通用网络爬虫,增加了链接评价模块以及内容评价模块。内容评价模块可以评价内容的重要性,同理,链接评价模块也可以评价出链接的重要性。聚焦爬虫爬取策略实现的关键就是评价页面的内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。
3. 增量式网络爬虫
增量式网络爬虫(Incremental Web Crawler)是指对已下载网页采取增量式更新,只爬取新产生的或已经发生变化的网页,对于未发生内容变化的网页,则不会爬取。增量式网络爬虫在一定程度上能够保证所爬取的页面是尽可能新的页面。增量式网络爬虫的体系结构包含本地页面集、待爬取URL集、本地页面URL集、爬取模块、排序模块及更新模块。
4. 深层网络爬虫
在互联网中,Web页面按存在方式可以分为表层网页和深层网页。表层网页是指不需要提交表单,使用超链接即可到达以静态网页为主构成的Web页面;深层页面则隐藏在表单后面,不能通过静态链接直接获取,是需要提交一定的关键词才能获得的Web页面。在互联网中,深层页面的数量往往比表层页面要多很多。在爬取深层页面时,最重要的部分是需要自动填写好对应的表单。
深层网络爬虫(Deep Web Crawler)体系结构由爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS (Label Value Set)控制器等基本功能模块及URL、LVS列表两个爬虫内部数据结构组成。其中LVS表示标签/数值集合,用来表示填充表单的数据源。
深层网络爬虫的表单填写有两种类型:第一种是基于领域知识的表单填写,即建立一个填写表单的关键词库,在需要填写时,根据语义分析选择对应的关键词进行填写;第二种是基于网页结构分析的表单填写,这种填写方式一般是在领域知识有限的情况下使用,程序根据网页结构进行分析,并自动地进行表单填写。
网络爬虫的应用
网络爬虫的应用非常广泛,它可以进行许多自动化操作。例如,它不仅能爬取网站上的图片、文字、视频等数据,而且能分析网站的用户活跃度、发言数、点赞数、热评等信息。爬虫还可应用于其他领域如众多金融投资领域,可自动爬取信息并进行精准投资分析等。如图所示。
下面展示一些网络爬虫实际运用的场景。
常见的BT(BitTorrent)网站,通过爬取互联网的DHT(Distributed Hash Table,一种分布式存储方法)网络中分享的BT种子信息,提供对外搜索服务。例如http://www.btanv.com/,如图所示。
又如一些云盘搜索网站,通过爬取用户共享出来的云盘文件数据,对文件数据进行分类划分,从而提供对外搜索服务,如http://www.pansou.com/,如图所示。
Robots协议
Robots协议(也被称为爬虫协议、机器人协议等)的全称是“机器人排除协议”(Robots Exclusion Protocol),网站通过Robots协议将搜索引擎抓取网站内容的范围作了约定,包括网站是否希望被搜索引擎抓取,内容是否允许被抓取,被抓取到的公开数据是否允许被转载。
除此之外,Robots协议还可以屏蔽一些网站中较大的文件,如图片、音频、视频等,节省服务器带宽;屏蔽站点的一些死链接,方便搜索引擎抓取网站内容;设置网站地图连接,方便引导爬虫爬取页面。
robots.txt(统一小写)是一种存放于网站根目录下的以ASCII编码的文本文件,它是Robots协议的具体体现。因为一些系统中的URL对大小写敏感,所以robots.txt的文件名应统一为小写。如果需要单独定义网络爬虫访问网站子目录时的行为,可将自定义的设置合并到根目录下的robots.txt。
Robots的约束力仅限于自律,没有强制性,搜索引擎一般都会遵循这个协议。除Robots协议以外,网站管理员仍有其他方式拒绝网络爬虫对网页的获取。
当网站内容有更新时,在robots.txt文件中提供的Sitemap内容可以帮助爬虫定位网站最新的内容,而无需爬取每一个网页。比如政府网站“http://www.gov.cn/”的Robots协议,如图所示。
图中几个重要信息表示如下:
l User-agent允许的爬虫,“*”说明允许所有爬虫爬取数据。
l Allow允许访问的目录。
l Disallow禁止访问的目录。
搜索引擎核心
每个搜索引擎都有自己的爬虫(如Baiduspider、360Spider、Bingbot等),通过网络爬虫可以更深层次地理解搜索引擎内部的工作原理,从而进一步优化搜索引擎。
当用户通过门户网站检索信息时,会通过用户交互接口(相当于搜索引擎的输入框)输入关键字,输入完成后通过检索器进行分词等操作,索引器会从索引数据库(对原始数据库进行索引后将数据存储于该数据库)中获取数据进行相应的检索处理。
用户输入完对应信息后,用户的行为(比如用户的IP地址、Agent类别和用户输入的关键词等)会被存储到用户日志数据库中,随后日志分析器会根据大量的用户数据去调整原始数据库和索引数据库,改变排名结果或进行其他操作。
需要注意的是,检索是一个动作,而索引是一个属性。例如商店里有大量的商品,为了能够快速地找到这些商品,需要将这些商品分为饮料类商品、电器类商品、日用品类商品、服装类商品等组别,这些商品的组名被称为索引。索引被索引器控制,索引可以大大提升查询效率。
搜索引擎的工作流程如图所示。
在图中,首先搜索引擎利用爬虫模块去爬取互联网中的网页,然后将爬取到的网页数据存储在原始数据库中。爬虫模块主要包括控制器和爬行器,控制器主要进行爬虫的控制,爬取器则负责具体的爬取任务。
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
这份完整版的Python全套学习资料已为大家备好,朋友们如果需要可以微信扫描下方二维码添加,输入"领取资料" 可免费领取全套资料【有什么需要协作的还可以随时联系我】朋友圈也会不定时的更新最前言python知识。
好文推荐
了解python的前景: https://blog.csdn.net/weixin_49892805/article/details/127196159
python有什么用: https://blog.csdn.net/weixin_49892805/article/details/127214402