92
《有线电视技术》  2019年第8期  总第356期
1  背景
随着互联网应用的普及与深入,智能电视凭借大屏化、人机交互等特点,受到用户欢迎。来自勾正的数据显示,预计到2020年,智能电视存量将超过2.8亿台,占市场比例近60%;智能电视到达率将逐步攀升到70%,使用时长在全部大屏中超过50%。智能电视正在成为家庭客厅中资讯获取,以及收听收看电影、电视剧的一种重要方式。
作为“互联网+电视”的产物,智能电视与生俱来的互联网属性使得它相比于传统电视在节目来源、内容、可选择性上都更加丰富多元。智能电视节目不再是由单一的、专业的广播电视台提供,而是汇集了广播电视台、网络媒体、自媒体等多种媒体的音视频信息;智能电视通常将电影、电视剧、纪录片、动画片等类型的节目通过适当的编排,有机整合在一起,相较于节目单固定的传统电视,它能为用户提供更多分类与选择。
在节目来源、类型、数量更加多样的同时,也给内容审核把关和监测
监管工作提出了巨大的挑战:在海量的电影、电视剧、动画片等节目中,在不断更新的智能电视节目里,仅仅依靠人工监看,及时发现问题节目的难度犹如大海捞针,只有获取其节目库,动态掌握节目的更新情况,才能对互联网电视集成平台及机顶盒传播节目总体情况有全面的把握。因此只有研究智能电视爬虫系统,通过自动化软件的方式抓取互联网电视机顶盒上海量的节目信息,将节目数据进行存储和显示,比对和分析,才能提高内容审核把关者的监管效率。
2  聚焦爬虫原理
根据使用场景,爬虫分为通用爬虫和聚焦爬虫两种。搜索引擎系统使用的是通用爬虫。聚焦爬虫则是面向特定主题需求的一种网络爬虫,它在实施抓取时会对内容进行处理筛选,只抓取需要的页面信息,智能电视机顶盒使用的是后者。
聚焦爬虫需要根据一定的算法和搜索策略选择下一步要抓取的网页
URL,并重复上述过程,直到达到系统的某一条件时停止。另外,爬虫系统获取的数据需要被存储,以便进行下一步的数据分析,建立索引,以及
后续的查询与检索。聚焦爬虫系统流程图如图1所示。
简言之,聚焦爬虫就是按照一定的规则和算法,自动地抓取所需信息的程序或者脚本。因此编写爬虫代码之前,首先要充分了解抓取对象的特征,
基于Node.js+MongoDB 小型智能电视机顶盒
爬虫系统的设计与实现
陈太沁  国家广播电视总局海南监测台
sql2000批量插入摘要:智能电视中海量的音视频节目,在给观众带来更多节目选择性的同时,也给智能电视节目的监管带来巨大的挑战。研发智能电视节目爬虫系统,能更好地掌握和分析智能电视节目数据,这是监管者亟需研究与解决的问题。本文介绍了基于Node.js+MongoDB 的智能电视节目爬虫系统的一种实现方法。
关键词:智能电视  聚焦爬虫  Node.js  MongoDB
图1  聚焦爬虫系统流程图
93
《有线电视技术》  2019年第8期  总第356期
分析其规律,对网页或数据进行过滤和分析,根据情况制定URL 搜索策略和算法。也就是说,前期必须积累基于目标网页内容和链接结构的特征信息,才有利于后期制定爬虫的抓取策略。
智能电视机顶盒与服务器之间通过网络进行通信,而HTTP 就是其网络通信的规则。HTTP 协议也叫超文本传输协议,是一种发布和接收HTML 页面的方法。HTTP 通信由两部分组成,即客户端请求消息与服务器响应消息。HTTP 请求主要分为Get 和Post 两种方法。
智能电视网络爬虫的抓取过程可以理解为模拟机顶盒的遥控器操作过程,即向服务器发出请求,收到服务器返回的响应数据,进行分析并提取出有用信息,存入数据库。机顶盒爬虫系统结构框图如图2所示。
3  具体系统设计
3.1  发送请求与获得EPG 页面
信息
智能电视机顶盒中各种节目的索引和导航都是通过EPG 系统完成的。EPG(Electronic Program Guide),即电子节目指南。EPG 服务器地址可以提供节目信息供客户端读取和显示,因此要获得初始抓取种子样本,可以先从分析EPG 地址的信息入手。通过抓包工具能到机顶盒请求EPG 的服务器地址。用浏览器打开该EPG 服务器地址,会收到EPG 服务器返回的一个文件。下载该文件后,用记事本打开,会发现内容为一些服务器地址和部分乱码。
3.2  解析EPG 页面
本系统选择Node.js 技术编写。
Node.js 是一个可以运行JS 的平台、基于Chrome V8解析引擎的JavaScript 运行环境,同时又是一项后端开发技术。JavaScript 在浏览器执行,Node 则在后端执行,因此Node 打破了前后端的壁垒,使得上下文一致性较好,数据可以很好地跨前后端使用,大大减少了前后端转换所需要的上下文交换的代价。Node.js 有JavaScript 的解析器,对JS 语言进行了增强,既可访问文件,又可访问数据库、操作网络等。
Node 的包管理器NPM 是全球最大的开源库生态系统,利用NPM 可以更加方便地分享、复用代码。管理本地安装NPM 包的最好方式是创建package.json 文件,它描述了项目所依赖的包。
Node 读取文件是异步回调,在等待文件读取时可以进行其他操作,因此大大提高了 Node.js 的性能,这种异步、非阻塞的特性可以高效处理爬虫系
统中大量的并发请求,也使编程更加轻便。
在Node.js 标准的API 中还提供了几个重要模块,即FS 文件系统模块、HTTP 通信模块、NET 模块。这些模块都是由Node.js 官方提供,编译成了二进制代码,可以直接通过Require 获取。其中,HTTP 模块是Node.js 提供的基于HTTP 协议的通信模块,既可以用来创建HTTP 服务器,又可以作为客户端向其它服务器发起请求。爬虫系统使用的是后者的功能。
用Node.js 的FS 模块的WriteFile 写入文件,可对比观察EPG 地址文件内容与机顶
盒实际界面的关系,寻编排规律。其中,UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode 的可变长度字符编码,又称万国码,用在网页上可以统一页面显示中文简体、繁体及其它语言。
图2  机顶盒爬虫系统结构框图
3.3  发现规律并抓取
经过对比观察发现,所有的电视剧名称出现在字符串“V”与“f”之间,电视剧集数都出现在字符串“全”与“集”之间,为此采用正则表达式法获取这两项内容。
var pattj = new RegExp("全([0-9])+集");//取出字符串的标题
var pattt = new RegExp("V.*?f");//取出电视剧的集数
通过字符串的匹配就能获得服务器中该页提供的电视剧名称和集数。
while ((result = (str1)) != null)  {}
exec查并返回当前的匹配结果。如果exec()到了匹配的文本,则返回一个结果数组。
除了掌握网页内容的规律,还要总结网页链接的规律,它是制定跳转到下一页的规则的基础,符合规律才有连续抓取的可能。在本系统中,通过抓包工具,在机顶盒运行时,抓取交互数据,分析数据包到EPG地址与机顶盒的页面之间的关系。
3.4  存储数据
由于爬虫自动抓取的数据量巨大,单纯采用文件的读写操作进行存储容易跑死,因此本系统采用MongoDB数据库存储数据。
MongoDB是一个基于分布式文件存储的数据库。旨在为Web应用提供可扩展的高性能数据存储解决方案。MongoDB将数据存储为一个文档,数据结构由键值对组成。支持多种语言,包括Node.js。MongoDB是一种文档导向数据库管理系统。
Node.js要连接MongoDB 并进行操作,需要安装MongoDB的Node.js包。由于NMP下载安装缓慢,可以使用淘宝镜像(cnmp)。
先安装cnmp,以管理员的身份
进入命令提示符界面,在命令行输入
node -v,npm -v命令测试是否安装成
功,安装成功后会出现版本号。
然后采用npm config set prefix"C:\
Program Files\nodejs\global"和npm
config set cache"C:\Program Files\nodejs\
cache"命令改变原有的环境变量。
再配置环境变量:“我的电脑”
右键点击属性进入该页面-点击高级
系统设置-点击环境变量进入该页面;
修改用户变量PATH;新增系统变量
NODE_PATH;修改系统变量path。
最后安装MongoDB的Node.js包。
创建一个MongoClient对象,然
后配置好指定的URL和端口号,就
可以用Node.js连接MongoDB了。与
MySQL不同的是,MongoDB会自动创
建数据库和集合,因为MongoDB是文
档类型的数据库,所以使用前不需要
手动创建。
3.5 导出MongoDB的数据为
Excel/JSON
在MongoDB 中不便于观察存储
数据,因此采用导出法,将数据导到
Excel中。将数据从MongoDB导出成
为Excel数据的命令。
导出MongoDB数据为Excel/JSON
html5模板html
时会遇到中文乱码问题,解决方法如下。
第一步,到MongoDB的安装路
径,并进入bin目录。
第二步,需执行“mongoexport-db
dbname-c dbcollection-out./data.csv”命
令,dbname为数据库名称,dbcollection
为数据库集合,data.csv为导出的数据
名。其中,csv后缀也可以改成json。
第三步,回到bin目录下即可
到data.csv和data.json文件。
第四步,在Excel中打开data.csv
文件,会发现文件中的中文乱码了。
这时就需要用记事本打开,格式选择
GB2312,保存后再用Excel打开,可
以解决中文乱码的问题。
4  本爬虫系统的优势及
存在的局限性
本爬虫系统能提高工作效率。目
前,通过聚焦爬虫抓取到的机顶盒节
mousemove和mouseover的区别目数超过25000个。在机顶盒上,一行
显示5个节目,如果人工翻页至少要
5000次,人工使用遥控器翻页的速度
大概在一秒钟一行,那么要翻遍机顶盒
爬虫软件 app上的所有节目需要至少83个小时,如
果一个人数完这些节目,按照一天8个
小时工作时长来算,需要10个工作日西瓜英语怎么读watermelon
vivo字体样式免费下载以上时间才能数完,而且得到的还只是
节目数,要记录节目名称需要更长的时
间。目前的聚焦爬虫系统只需要3个小
时的操作,就能获取机顶盒上的所有节
目,仅是数节目数这一工作,效率相较
人工的办法提高了27倍。
爬虫系统虽然提高了不少效率,
但是由于监管的要求也在不断提高,
系统还存在着不少局限性。本爬虫目
前仅仅适用于单个机顶盒的节目统计,
无法适应大部分机顶盒的需求;图片、
音频、视频等多媒体不同数据尚不能
够读取;不易维护;视频节目流仍然
无法自动监看,内容仍需人工监看;
无法直接显示,统计仍需手工操作爬
虫系统;数据的比对分析和数据的深
度挖掘还做得不够;还需完善更新节
目功能等。下一步将针对以上局限性
进行改善。
参考文献
[1]朴灵.深入浅出Node.js[M].北京:人民邮
电出版社,2013.
[2] Kristina Cbodorow.MongoDB权威指南[M].
北京: 人民邮电出版社,2014.CATV
94《有线电视技术》  2019年第8期  总第356期

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。