基于R语言的web信息抽取及可视化应用
2018-04-22马寅秋
马寅秋
摘 要 本文通过一个基本的web文本信息抽取实例,展示了在R语言平台下,利用人工构建的正则表达式在静态web文本抽取方面的一些基本做法。同时,将其所抽取的基本内容进行组织,用较为新颖的单帧可视化词云及多帧可视化词云进行呈现。
关键词 信息抽取 正则表达式 R语言 可视化
中图分类号:TP311.52文献标识码:A
R语言一直以来以在数据统计功能方面为人所称道,很多数据资料往往用很少的几行R语言代码就能呈现出很专业的视觉效果。解决了大部分数据处理人员所头疼的数据可视化问题。下面就以baidu热搜榜的热搜信息的文本抽取为例,展示Web文本抽取及呈现在R语言平台下的实现流程。
1抓取网页数据
首先所要做的就是抓取相关网页数据,网页数据一般是以URL为指向进行抓取,在极少情况下也可以通过数据流的形式抓取。当给出提取文本信息的目标URL后,用readline()方法去读取网页数据,网页数据是以html格式返回。
1.1网页数据处理
网页数据内包含大量的冗余数据,有用数据夹杂在冗余数据之间。那么,我们必须使用某些方法来去除冗余数据,获取有用数据。这些数据在所有数据中的放置方式是有一定规律可循的。找到这些有用信息最简洁,高效的做法就是利用正则表达式。在计算机科学中,正则表达式是由普通字符和元字符组成的一种逻辑公式,是用来表达对字符串的一种过滤逻辑。一个正则表达式通常被称为一个模式可以用来描述或者匹配一系列符合某个句法规则的字符串。正则表达式本身并不是一种完备的程序设计语言,准确的说,它是一种内置于其他程序语言中的“微型语言”。
1.2网页数据格式处理
首先,利用正则表达式获取网页编码。网页编码的信息一般都标签的属性“charset”中,因此,可以通过正则表达式进行匹配来提取编码信息。这个正则表达式较为简单,将所要查找的关键字“charset=”与其后的非数字字母型符号找出,然后做一个反向匹配,就可以找出编码类型。找出编码类型之后,将R语言所抓取的网页数据转换为相应的编码格式。这样网页中的有用数据才能被正确解析。
1.3抓取有效信息
在抓取有效信息之前,必须要清楚掌握有效信息处于网页数据中的哪些位置,其中的前后规律与结构是怎样的。这样,才能通过正则表达式对于结构的匹配来获取相应的数据。通过分析,发现所有的热点新闻标题都被放置在包含属性“class”且属性“list-title”的标签的内容之中。
对于标签内容的提取不同于前面对于标签属性的提取。标签的属性值紧跟在确定的属性名称之后,因此,寻找起来定位相對容易。而内容并不紧跟在标签名称或某一属性名称之后,而是在标签的“>”之后。所以,当我们定位到明确的属性值“class=list-title”之后,必须寻找包含此属性的标签的头中的“>”部分,以此为标识作为有效数据的开始。那么,自然而然,标签的结尾则是作为内容标识的结尾。值得注意的是,在此利用正则表达式时不可使用贪婪匹配,否则所定位的“>”就不可能是所定位标签的部分,自然获取不到所要查找的数据。
当然,根据文本提取项目的需求,有用数据经常并不仅仅只是标题内容这一信息,从网页中还可以获取到点击人数以及排名上升下降情况。这些信息包含在标签之中,标签的内容是新闻相应的点击量,属性“class”的值有三种,分别是“icon-rise”、“icon-fair”以及“icon-fall”,各自代表新闻的排名是上升,静止,还是下降。
当能提取编码信息与新闻内容信息之后,挖掘点击量信息相对就较为轻松。可以通过定位“查看pdf文档请下载app