吳則建 王鵬虎 龐瑞江 黃永平



[摘要]本文介紹了網絡爬蟲及主題爬蟲原理,結合商業銀行內部審計工作實踐,探索了主題網絡爬蟲在商業銀行內部審計中的實踐應用及未來展望。
[關鍵詞]大數據 ? ?智慧審計 ? ?網絡爬蟲
著移動互聯網、社交媒體、電子商務等技術
的興起,互聯網生成了海量數據。在大數據審計環境下,如何快速、精準、全面地獲取內外部數據,成為商業銀行實施大數據審計成功與否的前提。主題網絡爬蟲是獲取內外部數據的一個重要方法。
一、網絡爬蟲簡介
網絡爬蟲,又稱網頁蜘蛛、網絡機器人,是一種按照一定的規則,自動抓取互聯網信息的程序或腳本。網絡爬蟲按照網頁爬取范圍的不同,一般分為通用網絡爬蟲和主題網絡爬蟲兩類。
通用網絡爬蟲是傳統搜索引擎(如谷歌、百度等)的重要組成部分。為滿足不同背景用戶的多樣性檢索目的和需求,通用網絡爬蟲的目標是盡可能在網絡上獲取足夠多的頁面、更大的網絡覆蓋率。通用網絡爬蟲以某一個或多個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所示。
除獲取監管動態及趨勢等相關數據外,還可利用主題網絡爬蟲獲取監管更加廣泛的信息,如獲取監管最新政策、最新新聞、獎勵等內容??蓪炔繉徲嫻ぷ魈峁┮欢ǖ幕A數據,并對實際工作提供一定參考和指引。
(二)主題網絡爬蟲在數據安全審計中的應用
隨著信息技術的飛速發展,近年來金融機構生產、使用和共享的信息呈現指數級增長態勢,信息傳遞渠道和方式的日益增加,使得信息安全問題凸顯,信息安全審計在信息系統審計中的作用更加重要,更加有必要去探索主題網絡爬蟲在數據安全審計中的應用。
首先構建敏感信息關鍵字字典,將常見的“用戶名”“密碼”“user”“ftpuser”“password”“passwd”等敏感信息納入字典,并整理解析IP地址和文件共享地址等正則表達式列表。選取辦公網首頁為種子主題爬蟲種子地址,進而使用廣度優先原則爬取網站頁面。爬取頁面內容后,提取頁面內容,將頁面內容與敏感信息正則表達式做校驗處理,然后對頁面內容做分詞處理,將分詞結果與敏感信息關鍵字字典進行模糊匹配,將匹配命中的頁面進行標記并標識匹配的敏感信息,得出包含疑似敏感信息的頁面列表,進而利用審計專家經驗,對候選頁面進行分析。
除網頁信息外,網站中通常還包括各類文檔附件,如doc、xlsx、ppt、txt等附件。爬蟲設計過程中,獲取候選URL鏈接時,不僅考慮網站頁面,還加入了根據鏈接類型及鏈接文件擴展名設計的適配器,根據不同類型選擇不同的適配器模塊,提取頁面及文件內容。
三、總結與展望
在當前大數據審計的趨勢下,如何更好地利用商業銀行內外部數據完成審計工作,是內部審計人員需要不斷思考的問題。大數據審計的前提及首要條件就是獲取數據,“工欲善其事,必先利其器”,主題網絡爬蟲就是實現大數據審計的一把“利器”。主題網絡爬蟲僅解決了部分數據獲取問題,面對實際工作中復雜的審計任務,還需要數據挖掘、機器學習算法并結合審計人員的專業判斷,對多源數據進行細致、專業的分析,這樣才能更好地發揮審計監督作用。
(作者單位:中信銀行昆明審計中心 中信銀行,郵政編碼:650000,電子郵箱:wuzejian@citicbank.com)
主要參考文獻
陳偉,孫夢蝶.基于網絡爬蟲技術的大數據審計方法研究[J].中國注冊會計師, 2018(7):78-82
牛艷芳,薛巖,鄧雪梅.審計大數據關聯的網絡分析平臺構建及應用研究[J].審計研究, 2018(5):37-44