Python网络爬虫案例实战:爬虫网络概述-网络爬虫技术

Python网络爬虫案例实战:爬虫网络概述-网络爬虫技术

在数据量爆发式增长的互联网时代,网站与用户的沟通本质上是数据的交换:搜索引擎从数据库中提取搜索结果,将其展现在用户面前;电商将产品的描述、价格展现在网站上,以供买家选择心仪的产品;社交媒体在用户生态圈的自我交互中产生大量文本、图片和视频数据。这些数据如果得以分析利用,不仅能够帮助第一方企业(也就是拥有这些数据的企业)做出更好的决策,对于第三方企业也是有益的。

1.4.1网络爬虫的概述

网络爬虫(Web Crawler)按照一定的规则,自动地爬取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。
下面通过图1-11展示一下网络爬虫在互联网中起到的作用。
在这里插入图片描述
网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。
搜索引擎(Search Engine)(例如,传统的通用搜索引擎 Baidu、Yahoo和Google等)是
一种大型复杂的网络爬虫,属于通用网络爬虫的范畴。但是通用搜索引擎存在一定的局限性:
(1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。
(2)通用搜索引擎的目标是获得尽可能大的网络覆盖率,因此有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
(3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且有一定结构的数据无能为力,不能很好地发现和获取。
(4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。为了解决上述问题,定向爬取相关网页资源的聚焦爬虫应运而生。
.聚焦爬虫是一个自动下载网页的程序,它根据既定的爬取目标,有选择地访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫不同,聚焦爬虫并不追求大的覆盖,而将目标定为爬取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。
.增量式网络爬虫是指对已下载网页采取增量式更新和只爬取新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬取的页面是尽可能新的页面。与周期性爬取和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬取新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬取算法的复杂度和实现难度。例如,想获取赶集网的招聘信息,以前爬取过的数据没有必要重复爬取,只需要获取更新的招聘数据,这时就要用到增量式爬虫。
.深层网络爬虫。Web页面按存在形式可以分为表层网页和深层网页。表层网页是指传统搜索引擎可以索引的页面,是以超链接可以到达的静态网页为主构成的Web页面。深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一个场景—爬取贴吧或者论坛中的数据,并必须在用户登录且有权限的情况下才能获取完整的数据。
网络爬虫的结构如图1-12所示。
在这里插入图片描述

1.4.2网络爬虫原理

Web网络爬虫系统的功能是下载网页数据,为搜索引擎系统提供数据来源。很多大型网络搜索引擎系统都被称为基于 Web数据采集的搜索引擎系统,比如 Google、Baidu。由此可见Web网络爬虫系统在搜索引擎中的重要性。网页中除了包含供用户阅读的文字信息外,还包含一些超链接信息。Web网络爬虫系统正是通过网页中的超链接信息不断获得网络上的其他网页的。正是因为这种采集过程像一个爬虫或者蜘蛛在网络上漫游,所以它才被称为网络爬虫系统或者网络蜘蛛系统,在英文中称为Spider或者 Crawler。其原理图如图1-13所示。
在这里插入图片描述

1.4.3网络爬虫系统的工作原理

在网络爬虫的系统框架中,主过程由控制器、解析器、资源库3部分组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容删除,爬虫的基本工作是由解析器完成。资源库主要用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。
1.控制器
控制器是网络爬虫的中央控制器,它主要负责根据系统传过来的URL链接,分配一个线程,然后启动线程调用爬虫爬取网页的过程。
2。解析器
解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页,对网页的文本进行处理,如过滤功能、抽取特殊HTML 标签的功能、分析数据功能。
3.资源库
资源库主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有Oracle、SQL Server等。
Web网络爬虫系统一般会选择一些比较重要的、出度(网页中链出超链接数)较大的网站的URL 作为种子 URL 集合。网络爬虫系统以这些种子集合作为初始URL,开始数据的爬取。因为网页中含有链接信息,通过已有网页的URL 会得到一些新的 URL,可以把网页之间的指向结构视为一个森林,每个种子URL对应的网页是森林中的一棵树的根节点。这样,Web网络爬虫系统就可以根据广度优先算法或者深度优先算法遍历所有的网页。由于深度优先搜索算法可能使爬虫系统陷入一个网站内部,不利于搜索比较靠近网站首页的网页信息,因此一般采用广度优先搜索算法采集网页。Web网络爬虫系统首先将种子 URL 放人下载队列,然后简单地从队首取出一个URL下载其对应的网页。将爬取到的内容存储后,再经过解析网页中的链接信息可以得到一些新的 URL,将这些 URL 加入下载队列。然后再取出一个URL,对其对应的网页进行下载,然后再解析,如此反复进行,直到遍历了整个网络或者满足某种条件后才会停下来。
网络爬虫的基本工作流程如下:
(1)首先选取一部分精心挑选的种子URL。
(2)将这些URL放入待爬取URL队列。
(3)从待爬取URL 队列中取出待爬取的URL,解析DNS,并且得到主机的IP,并将URL对应的网页下载下来,存储到已下载网页库中。此外,将这些 URL放入已爬取URL队列。
(4)分析已爬取URL 队列中的URL,分析其中的其他URL,并且将URL放入待爬取URL队列,从而进入下一个循环,如图1-14所示。
在这里插入图片描述

1.4.4Python 爬虫的架构

Python爬虫架构主要由5个部分组成,分别是调度器、URL 管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。
调度器:相当于一台计算机的 CPU,主要负责调度 URL 管理器、下载器、解析器之间的协调工作。
URL管理器:包括待爬取的URL 地址和已爬取的URL 地址,防止重复爬取URL和循环爬取URL,实现URL管理器主要用3种方式,即通过内存、数据库、缓存数据库来实现。
网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)。
网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出有用的信息,也可以根据DOM 树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,以该方法提取数据时就会非常困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用1xml 进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析xml和 HTML),html.parser 和 beautifulsoup 以及lxml都是以DOM树的方式进行解析的。
应用程序:就是从网页中提取的有用数据所组成的一个应用。

1.4.5爬虫对互联网进行划分

对应地,可以将互联网的所有页面分为5部分,如图1-15所示。
(1)已下载未过期网页。
在这里插入图片描述
(2)已下载已过期网页:爬取到的网页实际上是互联网内容的一个镜像与备份,互联网是动态变化的,一部分互联网上的内容已经发生了变化,这时,这部分爬取到的网页就已经过期了。
(3)待下载网页:也就是待爬取URL 队列中的那些页面。
(4)可知网页:还没有爬取下来,也没有在待爬取 URL 队列中,但是可以通过对已爬取页面或者待爬取URL对应页面进行分析获取到的URL,被认为是可知网页。
(5)还有一部分网页,爬虫是无法直接爬取下载的,称为不可知网页。
在这里插入图片描述

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值