logo资料库

论文研究-爬虫抽取失效预警方案的设计与实现 .pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
中国科技论文在线 http://www.paper.edu.cn 爬虫抽取失效预警方案的设计与实现 黄国锴,王洪波** (北京邮电大学网络与交换技术国家重点实验室,北京 100876) 5 摘要:随着互联网的发展和普及,互联网已经成为人们生活必不可少的一部分。而随着互联 网上数据量的膨胀,针对某一领域的垂直聚合变应运而生,视频垂直内容聚合便是其中的 一个重要领域。本文针对视频内容聚合领域的爬虫系统经常遇到的来源网站改版导致爬虫 失效的问题进行了研究,并指定出一套感知爬虫系统改版的方案,通过在爬虫系统执行时 进行数据记录以及爬虫系统后续进行数据整理,从剧集缺失、分集缺失、字段抽取不完全 等方面指定了针对性的解决方案,并经过实验获得了一定的效果。 关键词:爬虫系统;抽取失效;改版;预警方案 中图分类号:TP399 10 15 Design and Implementation of the Extract Failure Warning Plan for Web Crawler HUANG Guokai, WANG Hongbo (State Key Laboratory of Networking and Switching Technology,Beijing University of Posts and Telecommunications,Beijing 100876) 20 25 30 Abstract: With the development and popularization of the Internet, the Internet has become an indispensable part of people's lives. And with the amount of data expands on the Internet, vertical polymerization for a particular area comes into being, video content vertical syndication is an important area of it. In this paper, the failure problem of crawler system in the field of video content aggregation was studied. The problem is because the page style of the video web site is changing frequently. According to the problems, a solution is designed to process the revision of source video web site. The solution implements by recording the data when the crawler system is running and arranging these data when the crawler system is finished. To solve the failure of crawl and extract web page, missing dramas, missing episodes and incomplete fields extraction will be counted and analyzed. And through this solution, a certain effect has been got. Key words: crawl system; failure of extractation; page revision; warning plan 0 引言 随着互联网的发展和普及,互联网已成为人们娱乐和消遣最重要的途径之一,而电视剧、 电影、综艺节目等视频内容在人们的娱乐生活中占有不可被替代的重要位置。而如今互联网 35 中存在众多的视频内容提供网站,这在给互联网用户提供了更多选择的同时,也给互联网用 户造成了一定的困扰。由于当前视频版权问题越来越被重视,因此目前没有任何一家视频网 站拥有所有电视剧、电影、综艺节目、动漫等视频内容的播放版权,这就导致大量互联网上 的视频内容消费者不能在某一家网站上获取所有想看的视频内容。所以基于垂直搜索的视频 内容聚合业务在如今就变得越来越重要。 40 垂直搜索,是专为搜索某一领域或主题的信息的搜索引擎,相对通用搜索来说,它给出 的 信息更集中、查询更准确、能提供更深度的服务[1]。爬虫系统是基于垂直搜索的视频内容聚 合的基础和重要组成部分。但是,爬虫系统的数据爬取依赖于来源网站 Web 页面的结构, 由于各家网站为了其内容展现的丰富性和多样性,常常会不定期修改网站前端的展示方式和 作者简介:黄国锴(1989-),男,硕士研究生,主要研究方向:网络技术与应用 通信联系人:王洪波(1975-),男,副教授,主要研究方向:云计算与数据中心网络等. E-mail: hbwang@bupt.edu.cn - 1 -
中国科技论文在线 http://www.paper.edu.cn 页面结构以提供更好的用户体验,这就给爬虫的数据爬取带来了非常大的困难,爬虫代码常 45 常会因为源视频网站的页面改版而部分或者全部失效,而爬虫维护者常常无法及时预知源视 频内容提供网站的页面改版,进而导致视频垂直搜索的实时性不能很好的保证。目前已经有 一些基于网页聚类的 web 自动抽取[2]、全自动网页信息抽取 Wapper 生成方法[3]的相关研究, 但是由于垂直业务的特殊性,目前方法的准确率还不足以应用于实际的项目中。 本文在 scrapy 开源爬虫框架[4]的基础上,在模版化抽取[5~6]的基础上,通过对视频聚合 爬虫系统采取一套系统的统计和监控方案,旨在使其自动感知爬虫系统的执行异常和数据异 50 常,在爬虫系统针对某一家来源网站的抓取失效时,能及时获知异常情况,当异常情况积累 到某一个阈值后发出警报,提醒开发和维护人员关注爬虫系统可能存在的异常。 1 爬虫系统异常类型 1.1 页面抓取失效 55 页面抓取失效主要从种子页面进入网站地图后,无法获取或无法全部获取到所有需要抓 取的页面链接,导致爬虫系统抓取到不完整的剧集,甚至完全抓不到剧集,导致爬虫系统出 现大面积的数据缺失。 1.2 页面抽取失效 视频页面分为详情页和播放页。针对详情页,当抓取到一个页面后需要从页面中抽取出 60 视频标题、别名、导演、主演、地区、年份、类型更新情况等十余个字段。而针对播放页, 则需要从中抽取出标题、当前集数、年份、所属剧集的详情页链接等字段。这些字段的特点 是,标题、链接等属于必需的字段,当抽取不到时即为异常情况;而导演、演员、地区等更 多的字段为非必需字段,不同的视频网站、剧集针对这些字段的完整程度存在较大的差异, 当这些字段抽取不完整时并不能判定抽取一定失效。而视频字段的抽取失效,将会导致这些 65 视频的信息不完整,数据可信度降低。 1.3 页面内容过期 页面内容过期是指在某个或某些页面被爬虫系统抓取、抽取、入库之后,视频来源网站 的编辑人员对该页面的视频信息进行了更新,包括字段的更新和视频剧集的变更(即完全换 了另一部剧集)。过期的页面内容不仅能减低了数据的正确性和可信度,也大大降低了前端 70 用户的直观体验。 1.4 无效的死链 无效的死链是由于来源网站视频下架、上传用户加密等原因导致的 404 页面以及非 404 但是无法正常观看的页面。这种页面的存在,不仅影响视频聚合系统的数据统计和分析,而 且大大影响了前端用户的观影体验。 75 2 爬虫系统异常感知的解决方案 要想监控爬虫系统异常,需要在爬虫系统中集成必要的监控和统计代码,用来记录爬虫 系统每一步的执行状况和中间结果数据,在爬虫系统执行的尾声进行一系列的统计和分析, 当结果超出预设的阈值时,即认为爬虫系统有可能存在由于来源网站改版等原因导致的失效 问题,并通过邮件的方式报警,提醒开发人员关注爬虫的运行情况。 - 2 -
中国科技论文在线 80 2.1 爬虫系统执行时的数据统计 2.1.1 统计数据的关系建模 http://www.paper.edu.cn 1) 关系:以 linkA=>linkB 表示由 linkA 到 linkB 的指向关系,以 linkA=>(linkB, linkC, linkD)表示由 linkA 到 link 列表的指向关系(linkB、linkC、linkD 为 link 列表中的元素)。 2) 属性:[pt:album|episode|medium]表示 link 的页面类型(page type)属性,不同属性 85 之间以逗号分隔。 3) 属性:以[vinfo:(title:xxx, url:xxx, category:xxx,„)]表示从 link 中抽取出的视频信息 (video info),video info 中不同的属性之间以逗号分隔。 4) 关系模型举例: a) linkA=>linkB 表示从链接 linkA 对应的页面中提取出链接 linkB; 90 b) linkA=>(linkB, linkC, linkD)表示从链接 linkA 对应的页面中提取出 link B、C、D; c) linkA[pt:album, vinfo: (title: ” 中 国 好 声 音 ” , category: ” 综 艺 ” , url: “http://v.qq.com/detail/1/11563.html”)]=>(linkB[pt:episode] , linkC[pt:medium])表示从详情页 (album)linkA 提取出分集页(episode)linkB 和中间页面(medium)linkC。而其中,从 linkA 对应页面抽取出了 title 为“中国好声音”的 video info 信息。 95 2.1.2 数据统计实现 以爬虫系统处理的众多页面中的一个页面为例。爬虫系统在执行过程中对中间结果进行 了如下统计: 1) 统 计 从 当 前 页 面 中 提 取 出 哪 些 新 的 待 抓 取 链 接 ( 即 linkA[pt:x]=>(linkB[pt:y], linkC[pt:z])) 100 该统计发生在爬虫每一次的爬取动作中,统计数据存入 page_link_extract.log 文件,日 志文件每一行为一个 json 串,存储的内容为 linkA 及从 linkA 提取出的 linkB、lingkC、等等。 2) 统计当前页面类型,以及从当前页面抽取出的各视频字段信息(即 linkA[pt:x, vinfo:(title: xx, category: yy, url: zz, „)]) 该统计发生在爬虫每一次的爬取动作中,统计数据存入 video_info_extract.log 文件,日 105 志文件没一行为一个 json 串,存储内容为 linkA 及其相关属性(包括 page type 属性,video info 属性,等等)。 3) 统计所有入库的视频实体数据和被丢弃的垃圾数据。 该统计发生在爬虫系统结束后,由脚本程序定时统计,与爬虫系统相互独立。统计内容 主要包括完整度较好、被收录到正式视频库中的视频实体,完整度较差、怀疑抽取不完全的 110 视频实体,完整度非常差或不属于详情页、分集页、中间过渡页面的任何一种、被判定为垃 圾数据的数据。 2.1.3 统计结果图形建模 通过上述两个方面的爬虫运行时的数据统计,再进行必要的整理,便可以得到一张关于 link 之间指向关系的映射图(如图 1 所示)和 link-video_info 模型图(如图 2 所示): - 3 -
中国科技论文在线 http://www.paper.edu.cn 115 图 1 link 指向关系映射模型图 图 2 link-video_info 模型图 2.2 爬虫系统执行完成后的数据统计 120 2.2.1 统计所有入库的视频实体数据和被丢弃的垃圾数据 该统计发生在爬虫系统结束后,由脚本程序定时统计,与爬虫系统相互独立。统计内容 - 4 -
中国科技论文在线 http://www.paper.edu.cn 主要包括完整度较好、被收录到正式视频库中的视频实体,完整度较差、怀疑抽取不完全的 视频实体,完整度非常差或不属于详情页、分集页、中间过渡页面的任何一种、被判定为垃 圾数据的数据。 125 2.2.2 数据库每日入库视频数量统计 该统计主要用于记录每日的视频实体入库量,通过长期的统计可以在时间轴上呈现出一 定的分布和规律。通过对时间轴的数据变化的自动预估以及人为地观察,可以在一定程度上 及时发现爬虫爬取数据在数量上的异常波动。 具体需要统计的项目包括: 130 1) 每日入库的详情页(album)总量 2) 每日入库的分集页(episode)总量 3) 每日每个类型(category)入库的数据量 4) 每日爬虫系统抽取(对应一套 log 文件)时,每个字段的抽取总次数和成功率。 2.2.3 死链及无法播放页面的检测和统计 135 每日用程序自动检测已入库的数据是否存在死链、是否存在非死链但无法播放的链接 (包括版权下线、用户下线、用户加密等),将这些链接标注为不可用,并记录下来。这些 垃圾链接是否能被成功标记出讲会很大程度上影响前端用户的使用体验,同时对视频数据的 各种统计、分析和预测都存在一定的干扰。 1) 死链检测 140 失效地址检测程序主要用来探测已入库的数据中是否包含死链和其他无法正常播放的 页面链接,这些链接合称为失效地址。其中,死链大多为 404 页面、500 页面、503 页面等, 这些页面的连接无法正常打开,失效地址检测程序需要每天探测已入库的数据是否存在死 链、存在多少死链,按照类型(category)进行分别统计并保存下来 2) 无法正常播放页面的检测 145 无法正常播放的页面常见的有版权下线、用户删除、用户加密等,对非死链但无法正常 播放的这类页面,需要分析每家视频网站的视频流请求逻辑,并利用失效地址检测程序自动 模拟视频流请求流程,当模拟程序执行到可以判断当前链接对应的视频无法播放时,变标记 和保存下这一失效地址,然后转而去探测下一个链接的有效性。 2.3 爬虫系统的数据分析 150 统计结果的分析按照分析步骤分为爬虫系统运行时的统计数据分析和爬虫系统运行后 的统计数据分析;按照分析目的分为视频分集缺失分析、视频信息字段抽取不完全分析、视 频剧集未抓取到。 2.3.1 视频分集缺失的分析 当一部剧集出现分集缺失时,那么它的下一次爬虫抽取将会出现分集列表的提取部分失 155 效或全部失效。当爬虫抓取到的所有链接里出现这种情况的剧集数达到某一个阈值时,则判 定爬虫系统有可能失效(来源网站有可能发生了改版)。 具体的步骤是: a1) 遍历所有的剧集; 2) 对于每一个剧集,讲本次抽取的结果与之前抽取的结果(之前抽取的结果是讲之前 - 5 -
中国科技论文在线 http://www.paper.edu.cn 160 的多次抽取进行合并整理后的结果)进行对比,如果本次抽取到的分集数量比上次抽取到的 分集数量减少较多,并且减少比例达到一定阈值时,记录当前剧集的抽取统计和分析结果; 3) 跳转处理下一个剧集; 4) 遍历完所有剧集后,对所有剧集的分析结果进行综合,当总体的分析结果满足一定 阈值(此阈值需要针对不同来源网站进行调试)时,则判定爬虫系统针对当前来源网站可能 165 存在失效情况。 2.3.2 视频信息字段抽取不完全的分析 当某些字段在一个链接页面中没有抽取到结果时,并不能判定爬虫系统的抽取模块存在 失效的情况,但是当爬虫系统爬取到的所有剧集里,根据来源网站、类型(category)等因 素进行分类后,有一定量的剧集无法抽取到某一个字段,并且与历史抽取情况对比也发现字 170 段抽取完整度上存在异常时,那么在很大程度上就可能存在爬虫失效的情况。 具体分析方法如下: 1) 遍历所有剧集,对每个视频信息实体的每个字段建立一个统计的计数器和异常内容 词典; 2) 对于每个视频信息实体,记录其每个字段的抽取情况,当抽取不到数据时给计数器 175 累加,当抽取到异常内容时进行登记。 3) 遍历完所有剧集后,得到一个抽取结果抽取成功度较差的字段集合; 4) 将这个字段集合与历史的抽取结果进行对比,如果历史抽取结果也较差,则需要考 虑标记这个字段为内容较差的字段,或者降低该字段的报警阈值;如果历史数据抽取结果比 本次结果好很多(需要满足一个阈值),则判定爬虫系统可能存在失效的情况。 180 2.3.3 视频剧集未抓取到的分析 视频剧集未抓取到的原因分为以下几点: 1) 来源网站的列表页无法索引到该视频。这种情况不属于爬虫失效的问题,不在本文 讨论范畴。 2) 爬虫系统抽取列表页(爬虫入口页)失效。这种情况需要对列表页的抽取结果进行 185 每日的统计,记录每日提取出的链接数量。当列表页发生改版时,常见的后果就是爬虫一个 链接都提取不到。列表页的监控比较简单,此处不做铺开描述。 爬虫的分集页和详情页互相抽取失效。此种情况的解决方案涵盖在视频分集缺失的分析方案 中,在此也不做铺开描述。 2.3.4 爬虫系统打分的计算过程 190 按照上述多个纬度的数据统计,结合历史数据,进行链接抽取的打分。以分集页面的 actor 字段抽取打分为例,打分过程大致为,先对最近当天的所有爬虫执行进行统计,统计 出 actor 字段在当天的所有抽取总次数、抽取成功次数,然后求抽取成功率,然后计算历史 最近 10 天的抽取成功率的均值和抽取总数的均值,与当天的抽取成功率进行对比,当天的 抽取总次数不低于 20,并且当日的抽取成功率显著低于历史成功率均值时,判定爬虫系统 195 存在 actor 字段抽取失效的可能性。链接抽取效果打分的方法类似。 为了判断显著低于历史均值,需要给打分结果指定一个阈值,目前阈值的指定方式为当 日的抽取成功率如果低于历史均值 10%,或者抽取成功率趋于 0,则作出预警。 - 6 -
中国科技论文在线 http://www.paper.edu.cn 3 爬虫系统异常感知的实验及评估 3.1 实验举例(以 youku 为例) 200 图 3 actor 字段抽取结果统计折线图 3.2 结果评估 通过图 3 可以看出,电视剧 actor 字段的抽取成功率普遍维持在 90%以上,而 10 月 24 日和 25 日却有显著的下降,这两日的字段抽取成功率显著低于平均值;电影在 24 日、25 205 日抽取成功率为 0,已属异常;动漫和综艺在 24 日、25 日均有较为明显的成功率异常拨动。 经人工验证,24 日、25 日视频信息来源网站的其中一种网页模板的父级 html 元素发生了改 变,导致页面字段的抽取成功率显著下降。其中,由于电影的页面版式较为单一,所以当页 面失效时所有页面的 actor 均无法抽取到;而电视剧、综艺、动漫的页面版式不唯一,存在 多个页面版式,视频信息来源网站的一种页面版式失效对于这三个 category 来说,只是部分 210 版式的页面失效,所以从曲线波动中可以看出,虽然抽取成功率有明显下降,但是仍然有一 定的抽取成功率。 不过,很明显可以看出,动漫和综艺的波动幅度较大,如果针对这两个 category 的阈值 设置不当,将会导致频繁的爬虫抽取模块失效警报。而阈值的设置,又是需要经过长时间的 观察、验证、总结和改进。所以后续仍然有大量的工作需要完成,以提高数据分析后对于预 215 警临界值的判定准确性。 4 结论 本文给出了在科研项目中实际遇到的爬虫系统失效问题的自动感知方案,并进行了实现 - 7 -
中国科技论文在线 http://www.paper.edu.cn 和验证。虽然实验结果距离完全自动的异常感知还有一定的差距,但是可以在一定程度上帮 助开发者在海量的数据中发现规律、趋势和异常波动。在今后的科研课题中将会持续改进和 220 完善爬虫系统失效感知的解决方案。 [参考文献] (References) [1] 罗丽姗. 垂直搜索引擎发展概述[J]. 图书馆学研究, 2006, 第 12 期(12):68-70. [2] 邱韬奋, 杨天奇, 曾洪波. 基于网页聚类的 Web 信息自动抽取[J]. 微型机与应用, 2011, 第 4 期(4):71-74. [3] 梅雪, 程学旗, 郭岩,等. 一种全自动生成网页信息抽取 Wrapper 的方法[J]. 中文信息学报, 2008, 22(01):22-29. [4] Scrapy developers. Scrapy 0.24 documentation[OL].[2014]. http://doc.scrapy.org/en/latest/ [5] 杨少华, 林海略, 韩燕波. 针对模板生成网页的一种数据自动抽取方法[J]. 软件学报, 2008, 第 2 期 (2):209-223. [6] 李卫东. 基于 DOM 的半结构化网页信息抽取算法[J]. 河北省科学院学报, 2009, 26(1):21-24. 225 230 - 8 -
分享到:
收藏