APP下载

分布式主题网络爬虫的设计与研究

2020-01-04黄宇

科学技术创新 2020年15期
关键词:爬虫数据处理网页

黄宇

(湖北工业大学图书馆,湖北 武汉430068)

1 概述

网络爬虫又称为网络蜘蛛, 是按一定规则自动抓取互联网上信息的程序,它为搜索引擎的服务提供数据基础,它的性能直接决定着搜索引擎的好坏[1]。目前, 不光搜索引擎会用网络爬虫, 很多前沿研究领域都需要网络爬虫技术的支撑。大数据分析所需要的海量数据需要通过网络爬虫获取。金融领域研究所需的大量精准且实时的金融数据也需要通过爬虫获取。商户通过抓取竞争对手发布的商品信息调整自己的营销策略[2],网络爬虫的应用已经渗透到了各行各业。

2 主题网络爬虫关键技术

2.1 主题网络爬虫

网络爬虫是搜索引擎的重要组成部分, 其作用是根据既定的抓取策略为搜索引擎从互联网上抓取数据, 为用户检索提供数据基础。主题网络爬虫在抓取数据时比普通网络爬虫多了两道处理步骤,分别是页面相关度评价与超链接相关度评估示。网页抓取模块从初始种子链接列表中的页面开始抓取数据, 网页分析模块对抓取的数据分析后, 由页面相关度评价模块计算该数据是否与领域主题相关,若相关则将所抓取数据过滤后存入网页库中,若无关则丢弃。与此同时从所抓取数据中提取超链接,并对其进行相关度评价,若有符合要求则将其按照相关度的高低排序后存入URL 库中,等待下一次遍历。

2.2 目标链接提取

网络爬虫在网络中抓取到相关页面后, 首先提取该网页的URL, 接着对去重后的URL继续爬取。但随着网页数量的剧烈增长,噪声链接也会随之增多,若不进行去噪,爬虫将会耗费大量资源在噪声链接上。目标链接提取的主要任务有两个,一个去除重复链接,另一剔除与内容无关的链接,即噪声链接。

2.2.1 待爬链接去重

在网络爬虫爬取资源的过程中, 会记录下所有已爬过页面的URL,当有新的URL 时就会和这个集合比较,看看是否存在。在这个集合很大的时候,存储这些URL 会耗费很大的存储空间,而且比对时遍历过去,需要相当多的时间和资源。针对这个问题,可以采用布隆过滤器来解决。布隆过滤器是1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中。它的优点是占用的内存很少,查询速度够快,比一般的算法要好的多,缺点是存在一定的误判率和删除困难[3]。

2.2.2 相关链接提取

随着媒体技术的不断发展, 网页上可承载的内容类型也越来越多,比如说与内容无关的声音、视频等。若不采用有效的方法对这部分内容即网页噪声进行处理, 网络爬虫将会对网页中所有的噪声链接进行爬取,这将极大地浪费系统资。为解决这一问题,需要网络爬虫能够识别网页中的噪声链接。目前常用的方法有如下几种:基于统计学的相关链接提取方法、基于DOM树的相关链接提取方法、基于机器学习的相关链接提取方法、基于视觉的噪声链接去除方法等。

2.3 业务数据缓存技术

2.3.1 页面缓存

页面缓存是将动态页面直接生成静态的页面放在服务器端,用户调取相同页面时,静态页面将直接下载到客户端,不再需要通过程序的运行和数据库的访问,大大降低了服务器的负载[4]。网络爬虫在工作过程中, 需要根据服务器传输的数据量来动态申请堆内存保存网页数据,以便用于后续网页的分析。常用的内存管理模型有ptmalloc、tcmalloc、内存池等。

2.3.2 DNS 缓存

DNS 是Domain Name System的缩写,即域名系统。互联网中的主机都被赋予了统一标识IP 地址, 但IP 地址是一个32 位二进制数字,不具备良好的可读性。DNS 将域名和IP 地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP 数串[5]。由于有了DNS 缓存,网络爬虫不用每次访问页面前都进行域名解析,这极大地提高了工作效率,减少解析时间。

3 分布式技术

分布式是相对集中式而言。集中式系统是由一台或多台主计算机组成的中心节点,数据集中存储于这个中心节点[6],连接它的终端仅用来输入和输出。分布式系统则是依托网络建立的一套系统。它是通过网络将多个类似集中式系统联系组织起来,合作完成数据处理。分布式系统拥有多种通用的物理和逻辑资源,能够动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。目前常用的分布式系统根据各节点通信的方式不同,分为主从式、自治式和混合式[7]。主从式架构的工作原理是在集群中选取一台主机作为控制节点,负责对集群中其他主机进行管理,其他各主机是相互独立的,彼此进行通信必须经过主机控制节点。自治式架构则是集群中的主机没有主次之分,每台主机既要对完成数据的处理工作,也要完成与其他各节点进行通信的功能。混合式架构中的节点分为控制节点与数据处理节点,控制节点主要是存储数据处理节点的状态并进行作业分配,数据处理节点则是进行数据处理与相互通信。

4 分布式主题网络爬虫系统设计

4.1 系统架构

本系统的架构采用的是混合式架构,控制节点的任务主要是存储数据处理节点的状态,进行各数据处理节点的作业分配,并对无法分配的作业进行集中处理。

系统采用的是最小负载调度算法,每次进行任务分配时总是选取当前负载最小的节点作为任务执行节点,集群中所有数据处理节点的负载情况都记录在控制节点的负载状态表中。这种算法实现起来简单高效开销小,因此被许多分布式系统中调度器所采用。

4.2 系统工作流程

分布式主题网络爬虫系统主要由六个功能模块组成,分别是采集模块、数据缓存模块、分析模块、提取模块、存储模块以及日志模块。采集模块的任务是主题网络爬虫依据设定好的策略在互连网上抓取符合特定条件的页面,并从已下载的页面中提取与主题相关度高的链接地址加入到待抓取序列中。数据缓存模块的主要功能是临时存放抓取的数据,这些数据包括两部分,网页数据与DNS数据,以降低系统地资源消耗,提高数据的处理速度。分析模块主要是对爬虫抓取到页面进行分析,它直接决定主题爬虫抓取信息的质量和准确率。对抓取得与主题相关的页面信息,系统将提取页面的链接、内容等主要信息并转化为结构化数据,以方便下一个模块进一步处理。存储模块是用来存储主题网络爬虫所抓取的符合主题的网页数据。日志模块是用来记录系统中软硬件的信息,并同时监视系统中发生事件及各自节点的负载情况。当发生错误时,用户可以通过系统日志来检查错误发生的原意,为后续的错误排查提供帮助。分布式主题爬虫在执行数据采集任务时,能同时对多个不同的相关主题进行采集。控制节点通过负载状态表给每个数据处理节点进行动态作业分配,每个数据处理节点无需考虑链接抓取任务的去重。此外,系统还能为提供伸缩服务。在数据采集的过程中,控制节点判断现在进行的某个主题数据采集资源不够,需要更多的数据处理节点进行工作时,会将空载或是负载较低的数据处理节点调入进来进行工作。

5 结论

信息化时代,互联网的搜索越来越趋于领域化和多元化,人们对能够准确快速获取自己想要的信息的需求越来越强烈,主题网路爬虫在今后的一段时间内都将是研究热点。本文设计的一种分布式主题爬虫,在一定程度上提高了搜索引擎的查准率和查全率,优化了系统负载。但由于技术水平有限,在新技术应用方面还有所欠缺,这就需要在今后的工作中进一步研究。

猜你喜欢

爬虫数据处理网页
利用网络爬虫技术验证房地产灰犀牛之说
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
基于Python的网络爬虫和反爬虫技术研究
基于CSS的网页导航栏的设计
利用爬虫技术的Geo-Gnutel la VANET流量采集
基于URL和网页类型的网页信息采集研究
大数据环境下基于python的网络爬虫技术
网页制作在英语教学中的应用
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用