复制成功
  • 图案背景
  • 纯色背景
zhouwang2

上传于:2015-06-17

粉丝量:89

一位正在IT行业中学习的小人物,想分享一些学习资料给所有人



面向教育新闻的主题爬虫设计与即应实现

下载积分:1250

内容提示: 华中科技大学硕士学位论文面向教育新闻的主题爬虫设计与实现姓名:卢振申请学位级别:硕士专业:通信与信息系统指导教师:刘威2011-01-09 I 华 中 科 技 大 学 硕 士 学 位 论 文 摘要 随着网络在世界范围内的飞速发展,互联网作为最具潜力与活力的新兴媒体已被公认为是继报纸、广播、电视之后的“第四媒体” ,成为反映社会新闻热点的重要载体。为了及时了解网络新闻热点,尤其是与教育主题相关的新闻热点和发展动向,相关机构引入了教育领域专用新闻热点分析系统。本文设计与实现的网络主题爬虫系统是新闻热点分析系统中的数据源,负责教育领域内新闻信息的采集。 ...

文档格式:PDF| 浏览次数:30| 上传日期:2015-06-17 22:26:06| 文档星级:
华中科技大学硕士学位论文面向教育新闻的主题爬虫设计与实现姓名:卢振申请学位级别:硕士专业:通信与信息系统指导教师:刘威2011-01-09 I 华 中 科 技 大 学 硕 士 学 位 论 文 摘要 随着网络在世界范围内的飞速发展,互联网作为最具潜力与活力的新兴媒体已被公认为是继报纸、广播、电视之后的“第四媒体” ,成为反映社会新闻热点的重要载体。为了及时了解网络新闻热点,尤其是与教育主题相关的新闻热点和发展动向,相关机构引入了教育领域专用新闻热点分析系统。本文设计与实现的网络主题爬虫系统是新闻热点分析系统中的数据源,负责教育领域内新闻信息的采集。 传统的网络爬虫为搜索引擎服务,但无法满足指定主题的应用需要,主题爬虫则是有选择性地爬取主题相关的网页。本文深入研究了主题爬虫的特点、工作流程和体系架构,提出了一种面向教育新闻的爬虫系统总体架构设计,并在此基础上设计了爬虫系统的各个模块。本文借助爬虫领域的相关技术和工具,结合新闻热点分析系统的需求,从原理或工作流程上详细论述了爬虫系统中核心模块的具体实现。论文所做的工作主要包括:首先,针对重点关注主要站点的问题,本文设计了一种基于权重模型的爬取策略。其次,为了提高超链接抽取效率,本文采取了基于 XPath的超链接精确抽取策略。最后,针对爬虫重复爬取的问题,本文设计了基于 Berkeley DB 的避免重复爬取策略。 本文通过对爬虫系统运行结果的分析,表明爬虫系统能够稳定地运行,持续为新闻热点分析系统提供数据。爬虫系统满足设计需求,取得了令人满意的效果,论文中基于XPath的超链接抽取策略和基于Berkeley DB的避免重复爬取策略对于主题爬虫的实现具有实际的借鉴意义。 关键字:关键字:主题爬虫, 信息抽取, 主题相关度, 超链接抽取 II 华 中 科 技 大 学 硕 士 学 位 论 文 Abstract With the rapid development of World Wide Web (WWW), it is widely accepted that the Internet, called the Fourth Media, will be the most potential and energetic media after newspapers, radio and television as an important carrier of the hot social news. In order to know the Internet hot news in time, especially to master the education-related hot spots and their trends, the related organizations of education introduced the hot news and analysis system. The focused spider designed and implemented by this paper is in the information collection layer and is the fundamental part of hot news and analysis system. It is responsible for the information collection within the education field. The traditional Web crawler serves to search engine, and it can’t meet the needs of the specified topic, but the focused spider selectively crawls topic related web pages. This paper deeply studies many key technologies such as degree of topic relatedness, text extraction and hyperlink extraction, and proposes a general framework of the crawler design for education news, and designs the modules of the crawler system. In the help of related technologies and tools and with the needs of the system itself, this paper discusses the concrete realization of the core module in detail. This paper has completed the following main work: Firstly, in order to focus on the main sites, we designed a crawling strategy based on the weight model; secondly, in order to improve the efficiency of hyperlink extraction, we adopted an accurate hyperlink extraction strategy based on XPath. Finally, in order to spider the visited URLs as little as possible, we used a crawling strategy to avoid duplication based on Berkeley DB. Through the analysis of the results of the system, it shows that the spider is running steadily and is contributing data for the hot news and analysis system continuously. The spider implemented by this paper meets the requirements and has achieved satisfactory results. The hyperlink extraction strategy based on XPath and the crawling strategy to avoid duplication based on Berkeley DB in this paper are important for the implementation of focused spider. Keywords: focused spider, information extraction, topic similarity, hyperlink extraction √独创性声明 本人声明所呈交的学位论文是我个人在导师的指导下进行的研究工作及取得的研究成果。尽我所知,除文中已标明引用的内容外,本论文不包含任何其他人或集体已经发表或撰写过的研究成果。 对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即: 学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密□,在______年解密后适用本授权书。 本论文属于 不保密□ 。 (请在以上方框内打“√”) 学 位 论 文 作 者 签 名 : 指 导 教 师 签 名 : 日期: 年 月 日 日期: 年 月 日 1 华 中 科 技 大 学 硕 士 学 位 论 文 1 绪论 1.1 课题背景 中国国务院新闻办公室在 2010 年 6 月 8 日发表了《中国互联网状况》白皮书,文中指出截至 2009 年底,中国网民人数达到 3.84 亿,80%以上的网民主要依靠互联网获取新闻信息,超过 66%的网民经常通过论坛、新闻评论、博客等渠道在网上发表言论[i]。可见,随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。 由于互联网是开放的,每个人都可以在网络上发表信息,内容涉及各个方面,小到心情日志,大到国家大事。互联网已成为思想文化信息的集散地,并具有传统媒体无法相比的优势:虚拟性、便捷性、多元性、互动性。网络新闻热点通常形成迅速,多是人们针对社会中的各种问题所表达的意见、态度和情绪,随着事件的发展而变化,是反映社会热点的重要载体之一。本课题来源于教育领域专用新闻热点分析系统项目(在本文中,简称为新闻分析系统)的建设,旨在为教育相关机构提供及时的网络新闻信息服务。这些服务与现有的主流媒体和搜索引擎不同,其重要特征具体体现在:专用性、及时性、智能化这三个方面。 1. 专用性 新闻分析系统专用性体现在数据采集、数据分析与数据表现等多个环节。在数据采集方面,系统采用指定覆盖(手工)与条件覆盖(自动)相结合的方式,有针对性的采集与教育相关的社会热点信息,并对信息进行抽取、去噪和结构化处理,为后续专用分析创造条件;在数据分析与数据表现方面,系统通过对采集得到的信息进行深入分析,提供多维度的数据结果展示。 2. 及时性 新闻分析系统通过爬虫技术自动获取网络信息,定期对重点媒体、重点栏目、重点人群以及热点话题进行扫描。通过采用自适应的扫描时间间隔策略,系统能够确保信息内容获取的及时性,让相关工作人员能够在系统面前“静”观事态发展。 3. 智能化 系统在网络热点信息数据获取准确性和实时性的基础上,利用自然语言和数据挖掘领域的成熟方法,为用户提供更加智能而深入的信息服务。例如:对同类话题进行去重和聚类;以媒体的影响力和重要性对话题进行带权重的排序;对热点的传播途径和规律进行建模以及对话题的主流意见和倾向性进行分析等。 2 华 中 科 技 大 学 硕 士 学 位 论 文 新闻分析系统项目建设意义重大, 一方面,新闻分析系统提供了大量深入的分析素材,方便全面地了解大众网络新闻的热点,尤其是跟教育领域密切相关的热点的发展动向。另一方面,原来的新闻信息搜集工作主要依靠人工完成,工作量巨大,覆盖面小,不仅费时、费力,还不免出现人为疏漏的情况,这种局面亟待通过技术手段提高工作效率。 本文完成面向教育新闻的主题爬虫设计与实现,该爬虫系统为整个新闻分析系统提供数据,完成教育领域新闻信息的搜集,因此可以说爬虫系统是整个新闻分析系统的基础,并且爬虫系统输出数据的好坏直接影响着系统结果的呈现,爬虫与新闻分析系统的关系如图 1.1 所示。 技术基础系统功能爬虫系统新闻分析系统中文分词文本聚类数据统计搜索索引话题推荐专题命中新闻头条热点词汇 图 1.1 爬虫与新闻分析系统的关系 1.2 主题爬虫研究现状 网络爬虫是一个从 Web 上自动下载网页的程序, 是搜索引擎的重要组成部分[ii],网络爬虫通常采用广度优先或者深度优先的爬取策略,在爬行的过程中,不关注网页与主题的相关性。为了满足系统应用的多样性和个性化,也为了提高爬虫的效率,主题爬虫的概念被提出。目前,主题爬虫是搜索领域的一个研究热点,关于主题爬虫的研究主要集中在爬取策略上,简单的说就是为了更好的确定“哪些网页需要爬取” 、 “哪些网页优先爬取”的问题。经过国内外学者多年的研究,提出了各种方法和策略,基本可以分为基于链接分析、基于内容分析两类。 1. 有两种最常用的链接分析算法:PageRank[iii]、HITS[iv],它们都是通过对网页间基于链接分析 链接度的递归和规范化, 计算出每个网页的重要度。 PageRank 是按照 URL 的重要度 3 华 中 科 技 大 学 硕 士 学 位 论 文 进行排序,优先爬取重要度高的网页,但缺点是仅计算了待抓取网页的重要性,而未考虑网页与主题的相关性,因此很容易出现多数抓取的网页是与主题不相关的现象。一些学者认为网页与网页之间通过超链接连接和社会网络(Social Network)相似,Davison[v]发现通过超链接连通的两个网页比随机选取的两个网页具有更大的相似性,也就是主题相邻性(Topical Locality)。针对这个问题,HITS 算法引入了权威网页(authority)和中心网页(hub)的概念。Mukherjea[vi]实现了一个抓取并分析相关网页的系统 WTMS,其中使用向量空间的相似度来计算网页与主题的相关度。 基于链接分析的算法需要解决网页隧道现象,是指一个主题相关的网页可能经过几个不相关的网页才能到达,如果父页面相关度低,很可能子页面就没机会被访问到,为此 Bergmark[vii]等人使用了隧道技术来克服这个问题。 2. 基于内容分析 网页内容主要是网页中的文本,其中包括:网页的标题、元数据(Meta 标签中的关键字与描述) 、链接地址、锚文本等。基于内容分析就是指利用上述网页内容特征进行的网页评价。随着多媒体数据、网络服务等各种网络资源的发展,原来以超文本为主的网页内容,渐渐演变为动态网页数据为主。所以,基于网页内容的分析算法也从之前较为单纯的纯文本相关度判定方法,变为涉及网页解析、语义理解、数据挖掘、机器学习等多方面的综合应用[viii]。 马亮等人实现了 IRobot[ix],一个中文主题信息搜集系统,系统的主要特点是重视页面标题、锚文本对主题相关度的影响。并且在预测 URL 相关度时,综合考虑父页面、 锚文本、 兄弟节点以及 URL 所在的特征区域的因素, 结合分配的相应权重值,通过加权求和计算出最终的主题相关度,以提高相关度计算的准确性。 CFC(Context Focused Crawler)[x]是使用网页构成的上下文来形成页面的层次结构,并利用这种层次结构指导主题爬虫,该方法大致可以分为三步:反向爬行、训练和抓取,实验表明该方法能在给定的时间内爬取了更多主题相关的网页。 基于分类器预测也是主题爬虫的一个研究方向[xi]。 Chakrabarti[xii]等人提出了使用朴素贝叶斯分类模型来引导主题爬虫,而 Johnson[xiii]等人提出了使用 SVM(Support Vector Machine,支持向量机)分类模型。文献[xiv]中通过具体的实验表明,SVM 分类模型实习的主题爬虫要优于朴素贝叶斯分类模型。 1.3 本文组织结构 本文根据新闻分析系统的需求,实现了一个爬虫系统,本文将结合爬虫系统的整体设计方案,详细介绍各个模块的工作流程,重点阐述爬虫所采取的策略、关键 4 华 中 科 技 大 学 硕 士 学 位 论 文 技术以及实现方法。论文的各个章节组织结构和内容如下: 第一章介绍爬虫系统的课题来源及背景,对国内外主题爬虫的研究现状进行总结,同时简要介绍了本文的组织结构。 第二章介绍网络爬虫及相关的技术,介绍主题爬虫与通用爬虫的区别,以及爬虫的架构分析,介绍爬虫系统用到的主要技术,网页解析、生产者消费者模型、主题相关度判定等。 第三章首先介绍新闻分析系统功能,以及爬虫与新闻分析系统的关系;然后给出爬虫系统的总体设计与架构;接着介绍爬虫系统的各个模块,并且从流程上描述了模块的工作原理;最后确定爬虫系统的数据库设计,包括各个具体表的含义 第四章着重于介绍关键技术策略与部分具体实现细节。首先,详细介绍在爬虫系统中都得到了实际应用的策略,包括:基于权重模型的爬取策略、避免重复爬取策略等。其次,详细阐述了爬虫各个模块的实现方案和流程,最后对爬虫系统的运行结果进行了分析。 第五章对爬虫的工作进行总结,并对接下来的工作进行展望。 5 华 中 科 技 大 学 硕 士 学 位 论 文 2 网络爬虫及相关技术 2.1 主题爬虫技术研究 互联网上网页的数量是巨大的,并且在不断地增加。Google 在 1998 年仅索引了260万个网页, 到2000年增长到10亿, 2008年7月25日, Google的工程师Jesse Alpert和 Nissan Hajaj 宣布已经发现 1 万亿个独立网页[xv]。随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。 网络爬虫(又被称为网络蜘蛛,网络机器人) ,是从互联网上按照一定规则自动下载网页的程序。爬虫工作的过程被形象地称为爬取或爬行。它从给定网页的 URL开始,不断从当前页面上抽取新的 URL 加入待爬取队列,直到满足系统的一定停止条件,工作流程如图 2.1(a)所示。 网络爬虫是搜索引擎的重要组成部分,搜索引擎使用爬虫提供的最新数据。它主要用于提供访问过页面的副本,并对得到的页面进行索引,以提供快速的访问。爬虫可以用来在网络上自动执行一些任务,如检查链接,确认网页代码,也可以用来抓取网页上某种特定类型的信息,如抓取电子邮件地址(通常用于垃圾邮件) 。但从某种意义上说,爬取网页就像是仰望夜里的星空,由于星星距离的不同,看到的只是星星在不同时间的状态。网络爬虫获得某个页面在某个时间的一个副本,但通常这并不能在任何时间代表这个网页,因为爬取需要时间,更为重要的一点是因为网页是不断变化的。 主题爬虫最先由 Chakrabarti[xii]引入,目的是有选择性地爬取主题相关的网页。与通用爬虫相比,主题爬虫工作流程更为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,只保留有用的链接并将其放入待抓取的队列。然后,它将根据一定的搜索策略从队列中选取下一步要抓取的网页 URL,并重复上述过程,直到满足系统的某一条件停止,如图 2.1(b)所示。相比之下,主题爬虫更能节省系统资源和网络带宽,并且能够保持爬取更及时。主题爬虫要求尽可能多地爬取相关度高的网页,尽可能少地下载无关网页,相对于通用网络爬虫,主题爬虫还需要解决以下几个问题: 1. 如何描述感兴趣的主题,即抓取定义目标,这是计算主题相关度的基础。 2. 如何确定待爬取 URL 的爬取顺序?此时的爬取不再是简单地以深度优先或广度优先遍历,而是按照相关度大小排序,优先访问相关度大的 URL。计算 URL 的爬取次序是不同主题爬虫设计的重要区别。 6 华 中 科 技 大 学 硕 士 学 位 论 文 3. 如何判定一个网页是否与主题相关?主题相关度算法也是不同主题爬虫设计的重要区别。 开始初始化URL获取网页抽取新的URL加入URL队列满足停止条件?结束是否(a) 通用爬虫工作流程开始初始化URL获取网页抽取新的URL加入URL队列满足停止条件?结束是(b) 主题爬虫工作流程用分析算法评价网页及URL根据搜索策略选择URL否 图 2.1 通用爬虫与主题爬虫工作流程对比 2.2 典型爬虫架构分析 爬虫要有一个好的爬取策略, 同时更需要一个优化过的架构, Shkapenyuk 和 Suel指出[xvi]:构造一个短时间内下载网页的“慢爬虫”是很简单的,但如果构造一个能够在几星期内下载千万级网页量的高性能爬虫系统将会遇到系统设计、I/O(Input/Output,输入/输出)、网络效率、自动化以及易管理性等方面的挑战。 爬虫的核心功能是在规定时间内尽可能多地爬取网页,实现一个基本的爬虫很简单,但构造一个工业强度级别的爬虫难很多。爬虫是搜索引擎的核心技术之一,商业搜索引擎视爬虫技术架构与算法为商业机密而不愿公布细节,只有大概的架构描述,当然也有为了避免 Spammers[xvii](垃圾邮件发送者)的考虑。但也有一些爬虫技术架构细节被公布出来, 成为借鉴和研究的工具, 如Internet Archive的Web robot[xviii],Google 早期版本的 Googlebot[iii],AltaVista 的 Mercator[xix]。同样地,也有在 GNU 版本下发布的知名爬虫,如 Nutch[xx]、Heritrix[xxi]。 7 华 中 科 技 大 学 硕 士 学 位 论 文 图 2.2 所示的是一个典型网络爬虫架构[xxii],其核心是一个多线程下载器,用于从互联网上爬取网页,一方面它对抽取的网页正文及元数据并进行存储,另一方面从网页中抽取超链接加入 URL 队列中,并且使用一个调度器控制访问 URL 的次序。 URLs文本及元数据网页多线程下载器调度器存储互联网URL队列URLs 图 2.2 一个典型的网络爬虫架构 但作为一个收集十亿级别网页的大规模爬虫系统而言,需要关注的更多,这么大的数据量要求更复杂的技术,包括更快的网页解析或者更有效的下载方式,图 2.3描述了一个详细的工业级爬虫架构[xxiii],接下来对其中的重点进行分析。 对于爬虫而言,重要的工作是下载网页,但由于网络延迟,单个页面的下载可能需要几秒钟,为了提高效率,应该在网络带宽的允许下,同一时刻下载多个页面。有两种基本方法:多线程/多进程、异步 I/O。由操作系统提供的多线程/多进程方式并不是最好的方式,使用非阻塞的异步 Socket,不阻塞进行中的进程/线程,而是可以响应网络传输完成的事件并进行处理,并且避免了在共享的任务池上加锁或者信号灯。 如果不采取措施,DNS 地址解析会成为一个重要的瓶颈。局域网中,DNS 服务器通常较小,对付几百个工作站的常规操作没问题,但一个爬虫产生的压力大很多。通常使用一个自定义的 DNS 模块,从并发、缓存、预取提高 DNS 解析模块的性能。为了减少等待查找涉及新主机的地址的时间,尽早将主机名投给 DNS 系统。可以在分析刚得到的网页时,从超链接中提取主机名,向缓存服务器提交 DNS 解析请求,结果放到 DNS 缓存中。通常用 UDP 实现,非连接,基于包的通信协议,并不保证包的投递,不用等待解析的完成,属于异步调用。 8 华 中 科 技 大 学 硕 士 学 位 论 文 避免重复爬取就需要检查某个 URL 是否已经被爬取过了,这个检查发生在将一个新的规格化后的 URL 放到工作池之前,不过要很快,不能在这里形成性能瓶颈,因为检查将要访问磁盘。此外,检测重复的网页,包括完全重复的网页(exact-duplicates)与接近重复的网页(near-duplicates) ,对于前者可以检测网页的MD5 摘要,后者可以使用 Shingling[xxiv](分段)算法。 等待DNS等待直到HTTPSocket可用发送HTTP请求与接收网页抓取线程负载监控与工作线程管理每个服务器队列持久化的URL全局工作池抓取元数据URL是否爬取过?内容是否已爬取URL处理器超链接抽取与规范化文本索引或其它分析文本库及索引异步UDPDNS预获取客户端DNS处理器缓存DNSDNS缓存库处理爬虫陷阱机器人协议超链接新工作 图 2.3 大规模爬虫架构示意图 2.3 爬虫相关技术及工具 2.3.1 网页解析 信息抽取(Information Extraction,简称 IE) ,主要是从文本中抽取结构化信息,抽取出来的数据可以直接返回给用户,也可以存储于数据库或电子表格中以供随后分析,或者用于索引系统以便将来进行检索访问[xxv]。而将 Web 作为信息源的一类信息抽取,则称为 Web 信息抽取。网页解析是 Web 信息抽取的一种形式,目的是从给定的网页中抽取关注的信息。例如,从新闻网页中抽取元数据(包括标题、描述及关键词) 、发表时间、正文内容以及网页中的链接等。 对网络爬虫而言,网页解析通常承担着两个任务:正文抽取与超链接抽取。正文抽取是对网页中的正文部分进行提取,为了接下来的内容分析做准备。正文抽取 9 华 中 科 技 大 学 硕 士 学 位 论 文 也可以独立于爬虫工作,但前提是爬虫需要将爬取的网页以文件的方式存储下来。超链接抽取对爬虫至关重要,抽取的链接加入待爬取队列,在很大程度上决定了爬虫下一步爬行的方向。 1. 正文抽取 1) 使用包装器(wrapper) 该方法是从待抽取的网页中归纳出抽取规则,创建包装器,然后依据包装器抽取相关内容[xxvi]。一个包装器通常匹配一个特定模式,这个模式依赖于一个抽取规则集合。为了新的需求而定制的包装器往往各不相同,这取决于所抽取的文本类型、任务和使用场景。文献[xxvii]利用网页设计模版的结构化、层次化特点,使用网页链接分类算法、网页结构分离算法,设计了一种全自动化生成 wrapper 的方法,从而实现对同类网页进行自动信息抽取的目的。虽然包装器只能根据网站定制,并且网页结构的复杂性、不规范性和易变性会带来诸多困难,但在多数情况下包装器是最准确的方式。 2) 基于 DOM(Document Object Model,文档对象模型)树 在进行抽取之前,先把网页转换成解析树,但如何根据解析树抽取正文却有不同的思路。文献[xxviii]和文献[xxix]都采取了一种分析标签树的分块算法,通过块特征和重要度进行取舍,从而找出包含正文的内容块。文献[xxx]提出了一种简单且易于实现的方法,基于统计的中文网页正文抽取方法,通过计算文本结点的文本密度(即文本长度/HTML 源码长度) , 并利用贝叶斯判别器设定密度门限值, 最后完成取舍。文献[xxxi]提出了一种基于双层决策的新闻网页正文的精确抽取算法,其中的双层决策是指对网页正文所在区域的全局范围决策和正文范围内的文字是否属于正文的局部内容决策。 3) 不依赖 DOM 树 由于解析 DOM 树费时, 并且在网页不规范的情况下, 解析的过程会变得更加复杂,文献[xxxii]是根据人们编写网页的方式形成一些启发式规则,并结合相关的统计规律,以逻辑行为基本处理单位,基于最大接纳距离从而抽取出正文。文献[xxxiii]借鉴了数据挖掘的思想,将网页源码进行线性化重构,然后初步去除网页噪声,再经过文本分类、聚类得到正文的脉络,最后通过吸收伪噪声段落形成网页正文。 2. 超链接抽取 互联网的网页之间是由超链接(Hyper Link)连接而成,文献[xxxiv]全面分析了万维网的链接结构及其应用。与正文抽取相比,抽取超链接似乎要简单得多,主要原因是超链接本身有标准的格式,可以很容易从网页中识别出来,而且不需要像正 10 华 中 科 技 大 学 硕 士 学 位 论 文 文抽取那样设计高效的抽取算法。 一种方法是使用正则表达式 (Regular Expression, 是指一个用来描述或者匹配一系列符合某个句法规则的字符串)提取匹配的超链接地址,这需要定义链接的正则表达式,并且使用支持正则表达式的平台。另外一种方法是解析 DOM 树,遍历各个节点,通过标签判断是否是链接,文献[xxxv]展示了利用开源工具 HtmlParser 实现页面解析,提取网页超链接的过程。 2.3.2 生产者消费者模型 在实际的软件开发过程中,经常会遇到如下场景:某个模块(此处的模块是广义的,可以是类、函数、线程、进程等)负责产生数据,而同时这些数据被另一个模块消费。这就是生产者消费者模型典型的应用场景,产生数据的模块被形象地称为生产者,而处理数据的模块,就被称为消费者[xxxvi]。生产者和消费者之间通常需要共享一个大小固定的缓存,生产者的任务是产生数据并放入缓存中,而消费者则从缓存中取出数据进行处理,如图 2.4 所示。 缓存生产者Producer消费者Consumerabcd 图 2.4 生产者消费者模型图 接下来以一个实际的例子来描述生产者消费者模型,假设需要寄一封信,大致过程如下: 1. 把信写好:相当于生产者产生新数据; 2. 把信放入邮筒:相当于生产者把数据写入缓存; 3. 邮递员把信从邮筒取出:相当于消费者把数据从缓存中取出; 4. 邮递员把信拿去邮局:相当于消费者对取出的数据进行处理。 生产者消费者模型的提出主要是用来处理并发问题的,使用生产者消费者模型会带来很多好处:一是支持并发;二是解耦,生产者消费者不直接依赖,耦合程度相应降低了,并且便于实现模块的独立。生产者消费者的伪码如代码 2.1 所示。 11 华 中 科 技 大 学 硕 士 学 位 论 文 代码 2.1 生产者消费者模型伪代码 Queue queue; //缓存队列 int bufferSize; //生产者:将 item 放入缓存 //生产者:将 item 放入缓存 procedure put(item){ while(queue.size() > bufferSize) { sleep(); //如果缓存已满,生产者等待 } queue.add(item); //将 item 加入缓存 wakeup(consumer); //唤醒消费者 } //消费者:从缓存中取出并进行处理 procedure get(){ while(queue.size() == 0){ sleep(); //如果缓存为空,消费者等待 } item = queue.poll();//取出数据,并从缓存中删除 wakeup(producer); //唤醒生产者 consumeItem(item); //处理数据 } 2.3.3 主题相关度算法 计算主题相关度方法有布尔模型、基于重要标签算法和向量空间模型算法。 1. 布尔模型 在布尔模型中, 文档用一个关键词集合 D 来表示, 主题用关键词集合 T 来表示。那么,主题相关度的判定就简化为计算 D 和 T 的交集,记作:║D∩T‖。如果交集中的元素越多,则认为该文档与给定主题的相关度越高。用 S(D)表示主题相关度,计算公式如式 2.1 所示。 ( )S DDTT=∩ (2.1) 2. 基于重要标签算法[xxxvii] 在网页中,有三种标签的文本最能够反映网页的主题,<title>、<h>和<meta>。其中,<title>标签是文档的标题,通常包含与页面主题相关的描述性词语,作为文章内容的概括描述。<h1>到<h6>标签从大到小定义文中的标题。<meta>标签用于提供有关页面的元信息,比如针对搜索引擎的描述和关键词。 基于重要标签的相关度算法就是依据这三种标签的文本来计算主题相关度。分别记它们的相关度为:St、Sh和 Sm。以<title>标签为例,假如其中的关键词集合 12 华 中 科 技 大 学 硕 士 学 位 论 文 ()1D,,ndd=…,在主题关键词集合 T 中出现的频率为()1,,nww…,则11nmtiiSw== ∑。将 St、Sh和 Sm与各自的权重系数 、 和 结合起来,根据公式 2.2 计算出总的相关度。 ( )S D()13thmSSSαβγ=++ (2.2) 3. 向量空间模型 此模型由 Salton[xxxviii]等人提出,使用向量来表示主题关键词集合 T 和文档关键词集合 D。文献[xxxix]使用该方法作为其主题相关度分析模块。将 T 的个数 n 作为向量空间的维数,每个关键词的权值记为iw ,那么主题用向量表示如下: ()1,,,1,, ,n aniiaaiwα ===…… 接下来需要对网页的文本信息进行分析,对关键词出现的频率进行统计,把频率最高的值作为参照基准,根据频率之比求出其它关键词的频率,记为ix 。则该网页所对应的向量的一维分量记为iix w ,页面向量表示如下: ()1,,nnx wx w…1,1,,inβ ==… 在确定了主题向量 和页面向量 后, 主题相关度就可以通过向量内积计算出来,即两个向量夹角的余弦: ()21+22x w2n1221222n212122222n2n,cos,nx w+…x wwx wx wwwx wα βα βα β+++==++++?… 2.3.4 HtmlParser 与 NekoHTML 介绍 1. HtmlParser HtmlParser[xl]是一个开源的网页解析器,提供了线性和嵌套两种解析网页的方式, 主要用于网页的转换以及网页内容的抽取。 HtmlParser 包含如下一些易于使用的特性:Filters(过滤器) ,Visitors(访问者模式)和 Custom Tags(自定义标签) 。它是一个快速,健壮并且经过严格测试过的组件,以简洁的设计和优秀的网页处理能力吸引着越来越多的开发者。HtmlParser 在设计上采用了经典的 Composite(组合)模式,通过 Node 和 Tag 来描述 HTML 页面上的各个元素,如图 2.5 所示。 13 华 中 科 技 大 学 硕 士 学 位 论 文 AbstractNodeRemarkNodeTextNodeTagNodeCompositeTagImageTagJspTagMetaTag...InputTagFormTagSelectTagHeadTagLinkTagHtml 图 2.5 HtmlParser 节点类结构图 ? Node 接口定义了进行树形结构节点操作的各种操作方法,包括节点到 Html 文本和 Text 文本的方法、树形结构遍历的方法等。 ? AbstractNode 是形成 HTML 树形结构的抽象基类,实现了 Node 接口。Node 分成三类:注释结点 RemarkNode、标签节点 TagNode 和文本节点 TextNode。 ? TagNode 包含了对 HTML 处理的核心的各个类,是所有 Tag 的基类,其中有分为包含其它标签的复合节点 ComositeTag 和不包含其他标签的叶子节点。 HtmlParser 解析网页通常有两种方式:Filter 模式和 Visitor 模式。前者适用于明确抽取特定结点,系统定义了多种具体的 Filter,可以根据不同的过滤条件来获得需要的结点。如果希望能够遍历所有的结点,按照结点的不同类型和访问过程进行操作的话,可以使用 Visitor 模式。 2. NekoHTML 简单的说,NekoHTML[xli]就是一个 HTML 扫描器和标签补偿器,能够使应用程序解析 HTML 文档并用标准的 XML 接口来访问其中的信息。它通过扫描 HTML 文档来修正其中的错误,例如:自动增补缺失的父元素、结束标签以及处理不匹配的内嵌元素标签。NekoHTML 的开发使用了 XNI(Xerces Native Interface,Xerces 本机接口) ,而 XNI 正是 Xerces2 的内部基础。 NekoHTML 将网页解析成一棵 DOM 树,对网页的操作就转化为对这棵树的操作,这正是它和 HtmlParser 的不同。得到 DOM 对象之后,可以使用 XPath 对 DOM中的元素进行定位,Xerces2 中提供了对 XPath 的支持使用,示例代码如表 2.1 所示。 14 华 中 科 技 大 学 硕 士 学 位 论 文 表 2.1 NekoHTML 解析过程示例 // 创建一个 NekoHTML 解析器 org.cyberneko.html.parsers.DOMParser parser = new DOMParser(); // 解析 URL 或 HTML 文档 parser.parse("http://www.sina.com.cn"); // 获得一个标准的 W3C 的 DOM 对象 org.w3c.dom.Document doucument = parser.getDocument(); // 给定解析 XPath 表达式,注意标签大写 String xpath = "//TABLE[@id='data']"; // 根据表达式从 DOM 中查找符合条件的 Node Node table = XPathAPI.selectSingleNode(document, xpath); 使用 NekoHTML 的第一步就是创建解析器, 最重要的是 DOMParser 这个类。 需要注意的是, 解析后得到的 DOM 对象的所有标签默认都会转换为大写, 但标签的属性不变,如<table id='data'>变为<TABLE id='data'>。此外,为了更精确的控制解析的动作,NekoHTML 提供了相应的设置属性,包括设置 HTML 文件编码,是否允许增补缺失的标签,是否过滤脚本和注释元素等。 2.4 本章小结 首先,本章介绍了网络通用爬虫与主题爬虫的特点与区别,接着分析了典型的爬虫架构,并对爬虫架构中的重要部分作了阐述。其次,本章介绍了爬虫相关技术,其中包括网页解析、生产者消费者模型以及主题相关度判定算法,这些技术指导着爬虫的实现。最后,本章介绍了用于解析网页的工具 HtmlParser 与 NekoHTML。 15 华 中 科 技 大 学 硕 士 学 位 论 文 3 爬虫系统的需求分析与设计 通过第一、二章对爬虫相关技术的研究表明,实现一个工业级、高性能的网络爬虫是一个很复杂的系统工程,然而,网络爬虫不仅仅服务于传统的搜索引擎,也可以根据不同的需求,设计实现符合特点要求的功能爬虫。为建设完成教育领域专用新闻热点分析系统,本文设计与实现了一种面向教育新闻的网络主题爬虫。总的来说,本文爬虫系统的功能就是持续爬取给定的待爬取列表,及时、准确地将解析后的结构化数据写入数据库。接下来将从新闻分析系统和爬虫系统的需求分析出发,介绍爬虫系统的总体架构设计与模块划分设计方案,并详细描述各个模块的工作流程或原理。 3.1 需求分析 3.1.1 新闻分析系统需求分析 网络新闻分析系统通常包含新闻采集、信息分析、处置服务三大内容。教育领域专用新闻热点分析系统在现有网络新闻系统的基础上,引入了专业服务和专用业务的新概念,从而确保网络新闻热点分析服务的专业性和有效性。该新闻分析系统设立在教育相关机构,通过互联网为教育研究机构和教育体系内的用户提供服务。新闻分析系统的数据来源是爬虫系统的输出,二者之间的数据依赖关系如图 3.1 所示。 互联网互联网爬虫系统数据库待爬取列表新闻分析系统爬取入口结构化数据分析解析查询 图 3.1 爬虫系统与新闻分析系统的数据关系 爬虫系统的入口是待爬取列表,爬虫从互联网上下载网页并进行网页解析,抽取出结构化数据写入数据库,作为爬虫系统的数据输出;新闻分析系统从数据库中查询数据,进行筛选、统计、分析,最终为用户提供服务。 图 3.2 展示了新闻分析系统的功能全貌,网络新闻信息的采集、加工、分析与服务分别对应到数据采集层、基础组件层和业务功能层三个层次的系统功能,接下来 16 华 中 科 技 大 学 硕 士 学 位 论 文 从中选取重点功能进行介绍。 1. 数据采集层:对抓取目标网络进行覆盖。 ? 最重要的是确定数据采集的来源,也就是待爬取列表,并对重点关注列表的网页结构进行分析,确定抓取模板。 ? 爬取站点管理:基本功能,对爬取站点进行增删改查基本操作。 2. 基础组件层:主要为后续的新闻分析提供基础性的数据预处理功能。 ? 爬虫技术:覆盖待爬取站点,具备多线程、自适应更新周期等特点。 ? 网页信息抽取: 自动或根据人工设定的模板对网页上的正文及元数据进行抽取,能够自适应识别网页编码以确保提取内容的正确性。 ? 内容分类与聚类:内容分类与聚类是系统的基本功能,系统在选用成熟的分类聚类算法的同时,进行人工指导,确保分类与聚类的精确性。 3. 业务功能层:在数据采集与基础组件的支持下为用户提供直接的分析服务。 ? 专题命中:在关键词过滤技术的基础上实现对目标内容的匹配,关键词一般是用户设置的教育领域关注的热点词汇(如:规划纲要) ,一旦有涉及这些词群的新闻报道,系统将会标记为命中。 ? 多功能搜索:提供多种细致的搜索功能,如:确定时间范围、确定媒体范围、结果集存储与人工筛选以及搜索结果分类、聚类等功能,为用户提供更加强大的数据筛选工具。 主流门户网站地方及一般媒体知名博客及专栏中央重点媒体数据采集层数据采集层爬虫技术基础组件层基础组件层模板与数据源管理内容聚类内容分类网页信息抽取教育领域词库分类知识库聚类知识库中文分词词库多功能搜索热点词汇新闻头条专题命中业务功能层业务功能层话题推荐搜索热点专题配置系统个性化配置用户角色配置爬取站点管理中文分词话题发现主题匹配网页内容去重系统功能与技术配置管理与词库热点追踪传播分析 图 3.2 新闻分析系统功能层次图 3.1.2 爬虫系统需求分析 爬虫系统为新闻分析系统服务,旨在爬取网页从而获得数据,并且将数据写入 17 华 中 科 技 大 学 硕 士 学 位 论 文 数据库,成为新闻分析系统的数据源。设计该爬虫系统,首先要明确爬取的站点范围,分析站点的结构特征,定义哪些具体数据属于系统需要,然后从爬虫设计的思想上给出爬虫的设计目标。 1. 爬虫功能要求 1) 站点覆盖范围 爬虫系统主要搜集、整理、分析互联网中的三类信息:来自中央、地方以及行业垂直媒体的新闻,来自知名专家、学者、专栏编辑的评论,以及来自社会普通大众的民意。在结合教育领域的需求上,最终确定了对主流的门户网站、新闻站点、博客、论坛等媒体的重点覆盖,如图 3.3 所示。 爬取站点中央及重点媒体知名专家、学者社会大众博客新闻站点论坛 图 3.3 爬取站点覆盖范围 2) 结构化数据 爬虫在爬取解析网页的整个过程中,需要记录获得的结构化数据,然后将这些结构化数据写入数据库,获得结构化数据的流程如图 3.4 所示。 结构化数据页面A爬取页面B标题元数据:关键字元数据:描述正文发布日期锚文本URL爬取时间链接下载 图 3.4 结构化数据 18 华 中 科 技 大 学 硕 士 学 位 论 文 爬虫从页面 A 中抽取链接并进行下载,得到页面 B,对其进行解析,在这个过程中,从页面 A 中抽取的链接和锚文本、爬取该链接的时间、解析网页 B 获得的发布日期、标题、正文等组成了爬虫系统的结构化数据。爬虫系统的目的就是为了得到这些结构化的信息。 2. 爬取特点 1) 爬取方式 网站每时每刻都可能在更新,网站编辑在首页发布新的文章,撤去过时的文章。为此,爬虫采用轮循访问待爬取列表的方式。首先,爬虫访问待爬取页,通过超链接抽取技术,获得页面上的部分链接,而这些链接中可能会包含广告等主题无关的链接;然后依次爬取这些链接,抽取信息后进行主题相关性判定,将符合要求的数据写入数据库。爬虫在合理的调度策略指导下,轮循访问待爬取列表,找出最新文章。由此可见,爬虫的调度策略是关键所在,如何做到及时发现重要新闻是需要认真考虑和设计的。 爬虫从首页或频道页出发,找出目标链接,然后再次爬取以获得目标内容,爬取深度为 2,爬虫不进行深度或广度遍历的原因是: ? 新闻分析系统对站点的覆盖有要求,这点在爬取分析时已提到; ? 新闻分析系统中需要知道该新闻内容的来源,比如说来自人民网的教育频道,如果进行深度爬取的话将会失去这一信息; ? 爬虫需要进行精确抽取,通过模板进行超链接的精确抽取和正文抽取,这一点是深度爬取很难实现的; ? 如果进行深度爬取,因为页面中存在大量的广告,通过链接访问到主题不相关页面十分容易,比如在某频道页链接到体育页、财经页面,如果爬取将耗费时间与资源,做过多无用功。 2) 站点结构特征 对抓取对象进行充分的研究,才有利于爬虫更好的开展工作。经过分析发现,网站通常采用树型结构,如图 3.5 所示。主体分为三个层次:首页、频道页、列表页,如同一棵大树,首先有一个树干(首页) ,然后是树枝(频道) ,最后是树叶(列表页) 。因为树型结构的扩展性强,网站增加内容时,可以通过细分树枝(频道)来轻松应对。此外,网站通常还设计了对爬虫非常友好的页面:滚动新闻页,用于动态刷新显示最新的若干条新闻。 19 华 中 科 技 大 学 硕 士 学 位 论 文 频道页频道页频道页首页列表页列表页列表页列表页列表页A A滚动新闻页B BC CD D 图 3.5 爬取站点结构特征 为了方便人们的阅读习惯,网站的设计者将新闻多集中在某几个固定区域块内,网站的这个特征为爬虫的精确抓取提供了思路。对于图 3.5 中的 A 和 B,由于页面中包含大量的链接(导航、广告等) ,如果进行全部链接的提取和分析,则会耗费很多的时间与资源,因此“抓大放小” ,爬取主要区域块,既突出了重点,又避免引入过多噪声;对于 C 和 D,由于页面本身是列表,可以尽量少的进行人工干预,可以使用通用的处理方式。 3. 爬虫的设计要求 1) 稳定性:爬虫系统要求在 7*24 的环境下运行,能持续不断地重复爬取,尽快地抓取新增的网页内容。 2) 高效率: 由于网页大小、 网络延迟等原因, 单个网页的下载可能用很长时间,为了提高效率,进行并行处理与控制,采用多线程下载的方式,但同时要保证数据的一致性。 3) 易配置: 良好的配置便于管理, 系统中所有的可配置信息从代码中独立出来,形成配置文件,在爬虫启动时进行加载,例如数据库连接的相关信息、线程分配个数、超时时间、网页默认字符集、存放文件位置等。 4) 可扩展:要求系统模块化,以接口的方式进行使用,耦合度低。例如,当增加或删除抓取的站点时,不影响爬虫的正常运行。 5) 自适应:爬虫能够在不同主题下使用,具有主题自适应功能。 本文的爬虫系统要达到以下两点: 1) 设计并实现一个稳定、健壮、可扩展的 WEB 爬虫,及时准确的将所需信息写入数据库,对信息的要求是:宁缺毋滥。 2) 抽取爬虫中功能独立的模块,编写并维护相关 API。 20 华 中 科 技 大 学 硕 士 学 位 论 文 3.2 总体设计 3.2.1 爬虫系统架构设计 借鉴已有爬虫的架构,结合爬虫系统的需求,基于爬虫的设计思想和目标,本文设计了一个主题爬虫,总体架构如图 3.6 所示。 网页多线程下载器互联网URLs超链接抽取网页池主题相关度判定权重模型分组待爬取列表URL队列文本及元数据存储 图 3.6 爬虫系统总体设计 爬虫从给定的待爬取列表出发,按照权重值大小对列表进行分组。爬虫在多线程的工作方式下,使用生产者/消费者模型,依次爬取每个权重组内的站点。一方面,生产者对网页进行超链接抽取,把抽取的链接加入 URL 队列。另一方面,消费者从URL 队列中取出链接进行爬取,同时作为生产者把下载的网页放入网页池,消费者从网页池中取出网页进行解析,抽取结构化数据进行主题相关度判定。 爬虫在爬取 URL 队列中的每一个链接前,首先判断该链接是否爬取过,如果之前已经爬取过,则立即转向下一个链接的处理。对于一个新链接,爬虫需要进行页面下载,但是由于网络或网站本身的问题,如果网页未下载成功,则放弃,并且转向下一个链接的处理。同时,每爬取一个网页,应记录该网页对应的链接地址,从而避免不必要的重复爬取。 爬虫解析网页,抽取正文和元数据进行主题相关度判定,如果判定该网页的内容是主题无关的,则立即转向下一个链接的处理。对于主题相关的网页,进行存储,即把该网页的信息(网站来源、爬取时间、标题、链接地址、正文等)写入数据库,成为新闻分析系统中一条合格的数据。爬虫是轮循策略,持续不断地重复上述过程。 21 华 中 科 技 大 学 硕 士 学 位 论 文 3.2.2 爬虫系统模块设计 爬虫系统按照模块进行划分,以组件的方式进行调用,各个模块之间的设计遵循“低耦合、高内聚”的原则,这样有利于系统的扩展、修改以及维护,爬虫系统总体模块结构如图 3.7 所示。 HTTP下载模块网页池正文抽取模块超链接抽取模块主题相关度判定模块放入内存数据库正文及元数据如果主题相关抽取后的链接超链接抽取正文抽取结构化数据多线程模块爬取待爬取列表工作流向工作调度调度调度加载爬取策略模块 图 3.7 爬虫系统总体模块 从功能上将爬虫系统划分为五个工作模块和一个核心调度模块,多线程模块是爬虫调度模块,是串连其余模块的核心,爬虫工作模块包括爬取策略模块、HTTP 下载模块、超链接抽取模块、正文抽取模块和主题相关度判定模块。 首先,爬虫加载待爬取列表,进入爬取策略模块,对爬取列表进行权重分组,对于新抽取的地址进行是否已爬取的判断。然后进入 HTT...

关注我们

关注微信公众号

您选择了以下内容