主题网络爬虫在商业银行内部审计中的应用
2019-09-10吴则建王鹏虎庞瑞江黄永平
吴则建 王鹏虎 庞瑞江 黄永平
[摘要]本文介绍了网络爬虫及主题爬虫原理,结合商业银行内部审计工作实践,探索了主题网络爬虫在商业银行内部审计中的实践应用及未来展望。
[关键词]大数据 智慧审计 网络爬虫
着移动互联网、社交媒体、电子商务等技术
的兴起,互联网生成了海量数据。在大数据审计环境下,如何快速、精准、全面地获取内外部数据,成为商业银行实施大数据审计成功与否的前提。主题网络爬虫是获取内外部数据的一个重要方法。
一、网络爬虫简介
网络爬虫,又称网页蜘蛛、网络机器人,是一种按照一定的规则,自动抓取互联网信息的程序或脚本。网络爬虫按照网页爬取范围的不同,一般分为通用网络爬虫和主题网络爬虫两类。
通用网络爬虫是传统搜索引擎(如谷歌、百度等)的重要组成部分。为满足不同背景用户的多样性检索目的和需求,通用网络爬虫的目标是尽可能在网络上获取足够多的页面、更大的网络覆盖率。通用网络爬虫以某一个或多个URL作为种子地址开始,先爬取种子URL网页中的内容,然后提取网页内包含的超链接列表,进而对超链接列表中的地址进行分析,将新增的超链接地址加入待爬行队列,进而重复网页的爬取过程,直到满足某停止条件退出网络爬虫或一直持续爬取并更新网页。通用网络爬虫工作原理如图1所示。
与通用网络爬虫不同,主题(聚焦)网络爬虫不是无目的地在网络上爬取足够多的页面,而是选择性地爬取那些预先定义好的与主题相关的页面。主题网络爬虫较通用网络爬虫工作流程更为复杂,需要根据一定的页面或者链接分析算法,过滤掉与主题无关的链接,保留与主题相关的链接放入待爬取URL队列。然后根据一定的搜索策略,从队列中选择下一步要爬取网页的URL,并一直重复上述过程,直至达到系统某一条件时停止。主题网络爬虫工作原理如图2所示。
二、主题网络爬虫在商业银行内部审计中的应用
在当前商业银行内部审计实践中,数据来源主要以银行各业务系统及内部审计非现场等系统的银行内部结构化数据为主,但在部分审计场景下,仅依靠内部结构化数据无法很好地完成审计任务。如“是否关联企业授信”问题审计过程中,仅依靠行内数据可能无法获取完整的企业关联信息;又如审计跟踪过程中,针对监管处罚信息,若仅依靠被审计单位主动报送数据作为基础数据,内部审计很难发现舞弊等问题;再如“内部网站是否公开存储了敏感信息”问题,审计过程中,仅依靠内部审计人员手动查阅网页,很難达到页面抽样比例的要求,同时也很难达到审计效果。如何快速、有效地获取商业银行内外相关数据,进而结合商业银行内部结构化数据对多源数据进行综合分析,是大数据时代商业银行内部审计亟需解决的问题。
(一)主题网络爬虫在监管动态及趋势分析中的应用
商业银行内部审计的重点是内部控制,是为减少内部控制的流程设计与执行的不完善而遭受的损失,而银行监管的重点是监督银行的整体经营情况和风险水平。如何把握监管动态、了解监管趋势,是内部审计工作确定内控测试范围及重点的一个重要因素。通过主题爬虫技术,采用一定的筛选算法,可以根据监管部门在互联网上的公开信息获取监管动态及趋势等相关数据。以下以云南省为例介绍主题网络爬虫在获取监管行政处罚信息中的实践应用。
首先分析行政处罚主题相关页面特征,云南省银保监局行政处罚信息首页URL地址为:“http://www.cbrc.gov.cn/zhuanti/xzcf/getPcjgXZCFDocListDividePage/yunnan.html”,分析行政处罚详细页面URL,发现行政处罚页面路径大都以“29.html”结尾,并且文件正文包含了“行政处罚”“违法违规事实”“决定书文号”“处罚依据”等关键字,因此选取上述页面特点作为强特征。同时,行政处罚详细页面内容较为规整,大部分数据均可进行结构化处理。爬取技术方面,分析页面结构及网络链路发现,监管部门网站大都有反爬取措施,很难通过传统的爬虫方法自动、快速地获取数据,并且由于该需求对系统性能及并发能力要求不高,经过分析,采用模拟用户使用浏览器的方式爬取数据。
根据页面分析结果,选取种子URL地址,结合行政处罚页面链接特征和页面内容中的关键字特征,对候选URL页面进行筛选。进而获取行政处罚详细页面,并对页面关键要素进行知识抽取。技术方案方面采用Python、selenium、geckodriver、XPath、Firefox的技术架构。部分核心源代码示例如下:
driver = webdriver.Firefox()
seed_province =
get_one_province_punish(seed_province, province)driver.close()
def getpunishurls(punishurl):
driver.get(punishurl)
punishurllist = driver.find_elements_by_xpath("/html/body/center/div/div[3]/ul/li/table/tbody/tr/td[3]/div[2]/div//a")punishdetaillinklist = []
for link in punishurllist:
href_link = link.get_attribute("href")
punishdetaillinklist.append(href_link)
return punishdetaillinklist
def getpunishdetail(url):
punish = {}
driver.get(url)
page_source = driver.page_source
punish['网址'] = url.strip()
titles = driver.find_elements_by_xpath('/html/body/center/div[3]/div[1]/div/div/table/tbody/tr[1]/td/table/tbody/tr[2]/td/div/div/p')punish['处罚标题'] = titles_con.strip()
rows = driver.find_elements_by_xpath('/html/body/center/div[3]/div[1]/div/div/table/tbody/tr[1]/td/table/tbody//table/tbody/tr')for row in rows:
Str = row.text.strip().split('\n')
name = Str[0]
value = Str[len(Str)-1]
punish[name] = value
return punish
通过主题网络爬虫获取数据后,对数据进行进一步分析,并对分析结果进行可视化展示,如图3—图5所示。
除获取监管动态及趋势等相关数据外,还可利用主题网络爬虫获取监管更加广泛的信息,如获取监管最新政策、最新新闻、奖励等内容。可对内部审计工作提供一定的基础数据,并对实际工作提供一定参考和指引。
(二)主题网络爬虫在数据安全审计中的应用
随着信息技术的飞速发展,近年来金融机构生产、使用和共享的信息呈现指数级增长态势,信息传递渠道和方式的日益增加,使得信息安全问题凸显,信息安全审计在信息系统审计中的作用更加重要,更加有必要去探索主题网络爬虫在数据安全审计中的应用。
首先构建敏感信息关键字字典,将常见的“用户名”“密码”“user”“ftpuser”“password”“passwd”等敏感信息纳入字典,并整理解析IP地址和文件共享地址等正则表达式列表。选取办公网首页为种子主题爬虫种子地址,进而使用广度优先原则爬取网站页面。爬取页面内容后,提取页面内容,将页面内容与敏感信息正则表达式做校验处理,然后对页面内容做分词处理,将分词结果与敏感信息关键字字典进行模糊匹配,将匹配命中的页面进行标记并标识匹配的敏感信息,得出包含疑似敏感信息的页面列表,进而利用审计专家经验,对候选页面进行分析。
除网页信息外,网站中通常还包括各类文档附件,如doc、xlsx、ppt、txt等附件。爬虫设计过程中,获取候选URL链接时,不仅考虑网站页面,还加入了根据链接类型及链接文件扩展名设计的适配器,根据不同类型选择不同的适配器模块,提取页面及文件内容。
三、总结与展望
在当前大数据审计的趋势下,如何更好地利用商业银行内外部数据完成审计工作,是內部审计人员需要不断思考的问题。大数据审计的前提及首要条件就是获取数据,“工欲善其事,必先利其器”,主题网络爬虫就是实现大数据审计的一把“利器”。主题网络爬虫仅解决了部分数据获取问题,面对实际工作中复杂的审计任务,还需要数据挖掘、机器学习算法并结合审计人员的专业判断,对多源数据进行细致、专业的分析,这样才能更好地发挥审计监督作用。
(作者单位:中信银行昆明审计中心 中信银行,邮政编码:650000,电子邮箱:wuzejian@citicbank.com)
主要参考文献
陈伟,孙梦蝶.基于网络爬虫技术的大数据审计方法研究[J].中国注册会计师, 2018(7):78-82
牛艳芳,薛岩,邓雪梅.审计大数据关联的网络分析平台构建及应用研究[J].审计研究, 2018(5):37-44