基于主题网络爬虫的程序设计资源库建设研究
- 格式:pdf
- 大小:1.29 MB
- 文档页数:4
初始化 Cookies
是
生成初始请求 队列
读取请求队列 进行爬取
页面解析模块
将新请求加入队列 是
是否有新 UR模块控制流程 爬 虫 启 动 后 ,会 首 先 运 行 spider 类 中 的 start_re⁃ quests 方法,在该方法中,我们进行主从模式的判断,如 果是主模式,则要进一步判断是否已有 Cookies,如果没 有,则需要同过 Selenium 模拟浏览器登录目标网站获取
教学资源库的建设目标是以为师生的教与学提供 优质服务为最终目的,以整合教学资源为主要方法,使 得教师在备课过程中更加高效、更加充实,让学生在课 下学习时更加自由、更加便捷。其发展趋势主要呈以下 两个特点:1. 资源选择便捷化。教师利用本学科的资源 库充实课程内容时,将可以更加快捷地对资源库进行筛 选。节约教师查找内容的时间,提高获取合适资源的准 确度,使教师有更多的时间去创新,反向充实资源库,形 成良性循环。2. 系统服务个性化。针对教师的教学内 容、课程对学生等级、学习阶段等的不同要求,根据对教 师信息的汇总和系统识别,为教师提供满足自身需求的 准确服务,提高系统资源的可用性。
(二)URL 重复过滤模块 该模块主要实现了 Bloom Filter 算法,并把它与实际 爬虫应用结合起来。将 Scrapy-redis 原有的利用 Redis 集合特性的去重模块进行替换。算法和调用接口的具 体实现主要在 DBloomFilter 类中完成,该类类图如图 4 所示。
模块,存储模块[3]。整个模块结构如图 2 所示。
[收稿时间]2018-11-23 [作者简介]郑洪源(1974-),男,河北丰宁人,博士,副教授,研究方向:计算机科学与技术。
76
University Education
控制子模块
selenium
URL 重复过滤 模块
Bloom Filter
爬虫模块
[关键词]资源库;网络爬虫;分布式爬取;SimHash 算法 [中图分类号] G64 [文献标识码] A [文章编号] 2095-3437(2019)09-0076-04
无论在国内还是国外,计算机类学生必修的程序设 计这门课程对于教学资源及时更新的需求益发迫切,太 过陈旧的教学资源和试题不利于对学生的培养。由于 学生可以在考前通过各种途径获取历年考试真题,通过 记忆考试题目便可以获得高分。考题陈旧、相似度高, 使得考试环节的权威性、有效性大打折扣,这不利于检验 学生的真实水平,也会导致教师教学资源的缺乏。
页面解析模块
文本相似过滤 模块
SimHash
存储模块
MongDB
图 2 爬虫模块结构 (一)控制子模块 本模块是在 Scrapy-Redis 组件中所实现的调度器、 爬虫等类的基础上,通过定义重载一些方法实现对爬虫 的个性化控制[4]。其控制流程如图 3 所示。
启动
否 是否是主模式启动
是
否 是否有 Cookies
2019 年 9 月
University Education
September,2019
基于主题网络爬虫的程序设计资源库建设研究
郑洪源
(南京航空航天大学计算机科学与技术学院,江苏 南京 210016)
[摘 要]目前,在国内高校中程序设计课程的资源库建设工作尚未普及,大多数教学资源存在较为严重的老旧、重复等问 题,难以满足师生日益增长的对大量新颖教学资源的需求。针对现在流行的网络爬虫框架进行分析和选择,在现有框架的基础 上设计了一种适合资源库建设的爬虫系统,利用爬虫的自动化特性完成教学资源库的内容获取及入库工作。同时,选用 Scrapyredis 对爬虫进行拓展,利用 Redis 实现对目标网站资源的分布式爬取,提高获取资源的速度。选用 SimHash 算法对爬取到的资源 内容进行相似度判别,过滤掉相似度过高的资源,完成对资源库的增量更新,提高获取到的资源的质量。经测试,研究的系统初 步满足资源库建设的自动化需求,能够获取有效的教学资源。
二、系统总体架构 本系统被设计为三个模块。分别为:爬虫模块,API 模块和数据可视化模块,系统架构如图 1 所示。
Redis
web
爬虫模块
MongoDB
数据可视化
API 模块
图 1 系统总体架构设计 本系统通过爬取特定的 URL,下载其标识的资源页 面,从互联网中获取所需的信息。并在爬虫模块中借用 Redis 进行信息文本的清洗、组合、判重等操作。最后将 合格的资源存入 MongoDB 数据库中,API 则根据数据可 视化的要求,通过对 MongoDB 数据库中的已存信息进行 查询等操作,实现对应 API 功能[2]。数据可视化模块则 同过调用 API 获取数据,在浏览器中对数据进行加工和 展示,使师生用户可以无障碍使用本系统。 三、爬虫模块设计 爬虫模块在 Scrapy 和 Scrapy-redis 组件的基础上, 进行功能拓展和实现。又分为多个子模块,包括:控制 子模块,url 重复过滤模块,页面解析模块,文本相似过滤
Cookies,并将 Cookies 存储于 Redis 中,共享给从模式启 动的爬虫使用。Cookies 生成之后,主模式下会生成待爬 取的初始请求队列,然后进入页面的爬取解析循环。对 于 从 模 式 启 动 的 爬 虫 ,则 直 接 进 入 页 面 的 爬 取 解 析 循 环,如果没有待爬取的请求,则等待。经过页面解析之 后,将提取后的结构化数据通过存储子模块进行存储。 其中,对于新产生的 URL 和新提取的数据都要经过重复 过滤,合格的 URL 和数据才能进入下一步流程当中[5]。