基于主题的网络爬虫系统的研究与实现

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于主题的网络爬虫系统的研究与实现

摘要针对高校软件教学中有效学习资源获取困难的现状,拟通过对开源的网络爬虫框架Heritrix进行二次开发,在爬虫的网络资源识别、数据筛选等功能点上开展研究工作,提出一种基于主题的数据采集方案,并在此基础上实现一种基于指定主题的网络爬虫系统,以满足高校软件教学对高质量学习资源的需求。

关键词学习资源;网络爬虫;Heritrix

Research and Implementation of Topic - based Web Crawler System

Tan xiang-wei

South China Institute of Software Engineering,Guangzhou University Guangzhou 510990,China

Abstract In view of the difficulty of acquisition of effective learning resources in the software teaching of colleges and universities,it is proposed to carry out the secondary development of Heritrix,an open-source web crawler framework,and carry out research work on the reptile network resource identification and data selection,etc.,and propose a theme- Data acquisition program,and on this basis to achieve a designated theme based on the network crawler system to meet the software teaching of high-quality learning resources needs.

Key words Learning resources;web crawler;Heritrix

引言

现在高校软件专业的教学活动开展越来越离不开网络,体现在教师课前备课需要上网搜索相关的课程资源、学生课后自学需要上网获取对应的学习资源。但是现在网络上的资源参差不齐,很多找到的资源并不符合学习的需要,要么是时效性较差要么就是重复互相引用的内容,师生大量的时间精力浪费在学习资源数据采集这一活动上,导致教学活动的高效开展出现瓶颈。所以使用网络爬虫帮助师生提高学习资源采集的效率就显得具有良好的价值和意义[1]。

传统网络爬虫虽然能较为便捷地获取网络上的资源,但是缺乏定制的话普遍带有盲目性,很多资源并不是用户所需要的,需要花费大量的时间精力来做数据的分析筛选提取操作;加之现在网络学习资源越来越丰富,不可避免地会出现同质化的问题,增加了数据分析的难度;大数据背景下,数据的更新越来越快,数据的体量也越来越大,无形中也降低了传统网络爬虫采集有效数据的效能[2]。

针对上述传统网络爬虫的问题,本文提出利用开源的Heritrix框架进行主题相关性定制开发的研究方案,以某高校校内学习资源共享平台为例,设计一种能

采集指定主题学习资源数据的网络爬虫系统,以提高学习资源数据采集的效率,为大数据时代下高校教学活动的开展注入新活力[3]。

2 基础知识

Heritrix框架在通用爬虫框架的基础上,集成了Spring的注入式开发思路,其主要由网络爬虫抓取控制器CrawlController、待处理uri列表Frontier、用于抓取任务管理线程池ToeThread、用于定制抓取任务工作内容的处理器链ProcessChain等几大模块组成。其框架结构如图1所示:

Heritrix框架首先读取抓取任务配置文件crawler-beans.cxml中的信息,定义好抓取范围、内容、种子URI以及抓取服务器的基本信息后,爬虫抓取控制器就会使用非关系型berckleyDB数据库构建待处理抓取任务列表Frontier,当抓紧控制器构建好URI抓取任务后,从线程池ToeThread中取出一条空闲的线程来搭载该任务,抓取任务通过任务处理器链中的各个处理器进行功能构建后开始抓取数据,在解析完抓取到的数据后,将新得到的URI放入待抓取队列中,一直循环直到抓取队列中的URI处理完毕为止。

使用Heritrix定制主题爬虫,主要是通过扩展处理器链的对应处理器来实现的,其中Extractor processing chain(抽取处理链)中的抽取处理器Extractor负责从网页中抽取新的URI。但是Heritrix所提供的通用Extractor只能够将所有信息全部抓取下来,用户就无法控制Heritrix到底该抓哪些内容,不该抓哪些内容,这时候可以考虑设计自定义的Extractor来实现爬虫抓取主题的定制[4]。编写自定义Extractor的方法如下:

首先继承抽象类Extractor重写其中的方法extract(CrawlURIcuri)

(2)获取URI对应的页面,将页面内容转为字符串,遍历检测页面的内容,如果内容当遇到包含特定标识的行时,也就是遇到了主题相关的页面链接地址,截取出URI,并在在前面加上域名构成URL,将链接加入到待处理列表中。因为文本讨论的是抓取校园中教学视频资源的主题网络爬虫,因此使用如下的正则表示来描述视频资源对应的URL:

抓取下来的相关主题页面的解析工作由JSoup这款代码级的页面解析工具来完成,经过页面分析,校园网站的教学视频资源使用标签来描述,期中src 中的属性就是视频链接。使用JSoup提供的API方便地获取指定元素节点中的属性。但是要注意的就是使用jsoup提供的API的get方法获取网页文档是处于无cooike状态的,部分网站想要取到视频播放地址,需要用户注册登录后才能有权限获得,可以考虑使用httpclient来模拟用户登录状态解决这一问题。待抓取队列调度器FrontierScheduler是PostProcessor类的派生类,它的作用是将在Extractor中所分析得出的URL链接加入到Frontier中,以待继续处理。为了进一步提高主题爬虫的识别能力,把一些已经抓取过的URL过滤掉,系统拟使用布隆过滤器来实现。假设有n个元素的集合S={s1,s2...sn},通过k个映射函数{f1,f2,...fk}进行一一对应的映射处理后,集合S中的每个元素sj(1<=j<=n)

相关文档
最新文档