国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

以Selenium+Chrome為核心的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

2020-11-14 11:32:02黃孝倫
關(guān)鍵詞:爬蟲異構(gòu)瀏覽器

黃孝倫,王 東

(重慶市衛(wèi)生信息中心,重慶 401120)

0 引 言

醫(yī)改監(jiān)測(cè)不僅是了解和評(píng)價(jià)醫(yī)改的重要數(shù)據(jù)來源,也是科學(xué)決策、推進(jìn)醫(yī)改的重要抓手[1]。但如何快速、有效地構(gòu)建醫(yī)改監(jiān)測(cè)平臺(tái)是各省市面臨的一個(gè)重要問題,這主要是因?yàn)楦麽t(yī)院系統(tǒng)存在異構(gòu)性,而且系統(tǒng)數(shù)據(jù)與部分監(jiān)測(cè)指標(biāo)之間不一致,因此產(chǎn)生大量的系統(tǒng)改造和接口開放等費(fèi)用。網(wǎng)絡(luò)爬蟲[2]是一個(gè)抓取網(wǎng)頁內(nèi)容的程序,利用網(wǎng)頁格式特征進(jìn)行網(wǎng)頁分析[3],可以快速、高效地獲取數(shù)據(jù),并且可以實(shí)時(shí)更新數(shù)據(jù),是構(gòu)建醫(yī)改監(jiān)測(cè)平臺(tái)指標(biāo)數(shù)據(jù)庫的有力工具。文中依托重慶市醫(yī)療衛(wèi)生信息專網(wǎng),利用網(wǎng)絡(luò)爬蟲技術(shù)構(gòu)造了一個(gè)采集系統(tǒng),可從各醫(yī)院異構(gòu)系統(tǒng)[4]中抓取指標(biāo)數(shù)據(jù),并按醫(yī)改監(jiān)測(cè)平臺(tái)相關(guān)要求對(duì)數(shù)據(jù)進(jìn)行處理,極大地提高了工作效率,降低了指標(biāo)數(shù)據(jù)采集成本。

1 關(guān)鍵技術(shù)

Selenium[5]是一個(gè)開源的、便攜式的基于Web應(yīng)用的測(cè)試工具集合,最初是為網(wǎng)站自動(dòng)化測(cè)試而開發(fā)的。Selenium直接運(yùn)行在瀏覽器中,通過一系列命令來模擬用戶操作,如將界面元素定位、窗口跳轉(zhuǎn)、結(jié)果比較等命令轉(zhuǎn)化成實(shí)際的HTTP請(qǐng)求在瀏覽器中運(yùn)行[6-7]。Selenium本身不帶瀏覽器,不支持瀏覽器的功能,需要與第三方瀏覽器結(jié)合使用。Selenium支持多種平臺(tái)(Windows,Linux,Solaris)、多種瀏覽器(IE,F(xiàn)irefox,Opera,Safari)和多種語言(Java,Ruby,Python,Perl,PHP,C#)。Chrome[8]是可在Headless模式下運(yùn)行的瀏覽器。Headless瀏覽器可在Web瀏覽器的環(huán)境中提供對(duì)網(wǎng)頁的自動(dòng)控制,但其通過命令行接口或使用網(wǎng)絡(luò)通信來執(zhí)行,即以瀏覽器相同的方式呈現(xiàn)和解釋HTML[9-10]。

ChromeDriver通過Chrome的自動(dòng)代理框架控制瀏覽器[11]。Selenium+Chrome借助ChromeDriver實(shí)現(xiàn)導(dǎo)航到網(wǎng)頁、用戶輸入、JavaScript執(zhí)行等功能,簡(jiǎn)單來說就是用瀏覽器來對(duì)目標(biāo)URL進(jìn)行解析、CSS渲染、JavaScript執(zhí)行,通過API模擬用戶行為(鼠標(biāo)點(diǎn)擊、鍵盤輸入),但不提供用戶界面渲染。

2 系統(tǒng)設(shè)計(jì)

2.1 系統(tǒng)架構(gòu)

本采集系統(tǒng)主要采用CS模式,構(gòu)成一個(gè)邏輯集中、物理分布的二級(jí)數(shù)據(jù)采集平臺(tái),為實(shí)現(xiàn)區(qū)域醫(yī)療信息監(jiān)測(cè)提供了數(shù)據(jù)源,如圖1所示。服務(wù)器端負(fù)責(zé)接收數(shù)據(jù)并交給醫(yī)改監(jiān)測(cè)平臺(tái)進(jìn)行存儲(chǔ)和處理;客戶端負(fù)責(zé)在各醫(yī)院信息系統(tǒng)中進(jìn)行數(shù)據(jù)采集、清洗和傳輸,其主要采用Selenium+Chrome技術(shù)構(gòu)建網(wǎng)絡(luò)爬蟲,根據(jù)配置文件定向抓取醫(yī)院信息資源。

圖1 系統(tǒng)架構(gòu)

2.2 系統(tǒng)流程及主要原理

本采集系統(tǒng)的核心原理是利用網(wǎng)絡(luò)爬蟲技術(shù)構(gòu)建指標(biāo)數(shù)據(jù)庫。與傳統(tǒng)網(wǎng)絡(luò)爬蟲不同的是,本采集系統(tǒng)的客戶端根據(jù)指標(biāo)特點(diǎn)構(gòu)造網(wǎng)絡(luò)爬蟲,在醫(yī)院信息系統(tǒng)中抓取數(shù)據(jù),大大簡(jiǎn)化了網(wǎng)絡(luò)爬蟲的流程。由于各個(gè)醫(yī)院采用的是不同廠商的信息系統(tǒng),數(shù)據(jù)所依賴的應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)或操作系統(tǒng)以及在存儲(chǔ)模式上都存在異構(gòu)性,因此每個(gè)客戶端通過配置方式獲得指標(biāo)數(shù)據(jù)在每個(gè)頁面中的元素位置,然后抓取相應(yīng)數(shù)據(jù),抓取流程見圖2。在程序運(yùn)行時(shí),客戶端根據(jù)配置文件生成Java源代碼[12-13],然后調(diào)用javac來編譯[14]。這種方式可以滿足各醫(yī)院自定義配置文件的需求,解決了異構(gòu)系統(tǒng)帶來的阻礙。

圖2 抓取流程

2.2.1 URL及登錄信息配置

根據(jù)指標(biāo)的數(shù)據(jù)來源,設(shè)置相應(yīng)的URL鏈接種子庫,遍歷鏈接種子庫中所有的URL即可獲得醫(yī)改監(jiān)測(cè)平臺(tái)所要求的所有指標(biāo)數(shù)據(jù)。為了提高響應(yīng)速度,本采集系統(tǒng)針對(duì)鏈接種子庫中每一條URL生成一個(gè)網(wǎng)絡(luò)爬蟲,以并行方式分別抓取相應(yīng)系統(tǒng)中的數(shù)據(jù)。登錄驗(yàn)證是網(wǎng)絡(luò)爬蟲抓取需要用戶權(quán)限的數(shù)據(jù)的必要模塊。在配置URL的同時(shí),每一條URL對(duì)應(yīng)一對(duì)用戶名和密碼,然后根據(jù)該憑證進(jìn)行模擬登錄。配置后,系統(tǒng)根據(jù)配置信息生成登陸代碼。

public boolean Logoin(WebDriver driver,String url, String username, String password){

try{driver.get(url);

//根據(jù)配置信息獲取用戶名文本框

WebElement usertbox=driver.findElement(By.name("txtUserName"));

Usertbox.sendKeys(username);

//根據(jù)配置信息獲取密碼文本框

WebElement pwtbox=driver.findElement(By.name("txtPassword"));

pwtbox.sendKeys(password);

//根據(jù)配置信息獲取登陸按鈕

WebElement lgbtn=driver.findElement(By.name("btnLogin"));

Lgbtn.click();

……

}

由于部分系統(tǒng)的session憑證設(shè)定了時(shí)效,session自動(dòng)失效時(shí),系統(tǒng)會(huì)要求用戶重新登錄。為了解決這個(gè)問題,在檢測(cè)到異常頁面URL時(shí)重新模擬登錄,獲取新的session;同時(shí),當(dāng)抓取完數(shù)據(jù)后,自動(dòng)退出系統(tǒng)。瀏覽器登錄系統(tǒng)抓取數(shù)據(jù)時(shí)采用Headless模式,無需顯示圖形界面,代碼如下:

public static WebDriver getWebDriver(Page page) {

System.setProperty("webdriver.chrome.driver","E:\Web\chromedriver_win32\chromedriver.exe");

ChromeOptions chromeOptions=new ChromeOptions();

//設(shè)置為Headless模式

chromeOptions.addArguments("--headless");

WebDriver driver=new ChromeDriver(chromeOptions);

driver.get(page.getUrl());

return driver;

}

}

2.2.2 數(shù)據(jù)抓取

登入系統(tǒng)后,采用配置方式獲取指標(biāo)數(shù)據(jù)在系統(tǒng)頁面中的位置元素。雖然各醫(yī)院的業(yè)務(wù)系統(tǒng)存在異構(gòu)性,但業(yè)務(wù)流程大體上是一致的。因此在抓取指標(biāo)數(shù)據(jù)時(shí),本采集系統(tǒng)根據(jù)不同系統(tǒng)設(shè)計(jì)了一個(gè)基本的流程模版。各醫(yī)院在配置時(shí)可依據(jù)該模版進(jìn)行調(diào)整。以“向基層醫(yī)療衛(wèi)生機(jī)構(gòu)轉(zhuǎn)診人次數(shù)”指標(biāo)為例,其所在的系統(tǒng)截圖如圖3所示。在配置該指標(biāo)的位置標(biāo)簽時(shí),需先點(diǎn)擊“雙向轉(zhuǎn)診”按鈕展開菜單,然后在菜單中點(diǎn)擊“下轉(zhuǎn)管理”按鈕,最后點(diǎn)擊“查詢”按鈕,在該頁面抓取總條數(shù)即獲得該醫(yī)院向基層醫(yī)療衛(wèi)生機(jī)構(gòu)轉(zhuǎn)診的人次數(shù)。該過程對(duì)應(yīng)的配置文件及對(duì)應(yīng)的關(guān)鍵代碼如下。元素“el-menu”用于存儲(chǔ)菜單名(元素“el-button”用于按鈕名),元素“value”存儲(chǔ)對(duì)應(yīng)元素在頁面中的位置屬性。

圖3 轉(zhuǎn)診表列表圖

雙選轉(zhuǎn)診

下轉(zhuǎn)管理

查詢

向基層醫(yī)療機(jī)構(gòu)轉(zhuǎn)診人次數(shù)

public void ZZTarget(WebDriver driver){

……

//跳轉(zhuǎn)到leftFrame

driver.switchTo().frame("leftFrame");

//點(diǎn)擊雙選轉(zhuǎn)診按鈕

WebElement path1=driver.findElement(By.xpath("http://*[@id='form1']/bt[5]"));

path1.click();

//點(diǎn)擊下轉(zhuǎn)管理菜單

WebElement path2=driver.findElement(By.xpath("http://*[@id='href']/h3/a"));

path2.click();

//跳轉(zhuǎn)到rightFrame

driver.switchTo().frame("rightFrame");

//點(diǎn)擊查詢按鈕

WebElement path3=driver.findElement(By.xpath("http://*[@id='xzcontent']"));

path3.click();

//獲取向基層醫(yī)療機(jī)構(gòu)轉(zhuǎn)診人次數(shù)

WebElement zztarget=driver.findElement(By.xpath("http://*[@id='totalcount']/h1"));

Stringxzcount= zztarget.getText();

……

}

2.2.3 數(shù)據(jù)存儲(chǔ)及清洗

由于網(wǎng)絡(luò)爬蟲抓取的大都是醫(yī)院的業(yè)務(wù)系統(tǒng),不斷抓取數(shù)據(jù)時(shí)可能會(huì)影響醫(yī)院業(yè)務(wù)工作的正常進(jìn)行,因此本采集系統(tǒng)在客戶端將網(wǎng)絡(luò)爬蟲抓取的原始頁面文件進(jìn)行緩存,減少網(wǎng)絡(luò)爬蟲對(duì)醫(yī)院業(yè)務(wù)系統(tǒng)造成的負(fù)擔(dān)。在出現(xiàn)問題時(shí),通過讀取緩存頁面獲取數(shù)據(jù),不必重新進(jìn)行抓取。

由于抓取的數(shù)據(jù)來自不同醫(yī)院的多個(gè)系統(tǒng),在格式、內(nèi)容方面都需要進(jìn)行相應(yīng)的清洗處理[15],主要包含以下幾個(gè)方面:

(1)指標(biāo)匯總處理。

由于各醫(yī)院信息系統(tǒng)建設(shè)時(shí)依照的是原有相關(guān)標(biāo)準(zhǔn),如系統(tǒng)按2004版收費(fèi)項(xiàng)目設(shè)定了“掛號(hào)費(fèi)”及“診查費(fèi)”。但是,醫(yī)改監(jiān)測(cè)平臺(tái)是按新的相關(guān)標(biāo)準(zhǔn)開發(fā)的,如按新修訂的《重慶市醫(yī)療服務(wù)項(xiàng)目?jī)r(jià)格表》增加了“診察費(fèi)收入”,其與“掛號(hào)費(fèi)”及“診查費(fèi)”對(duì)應(yīng)。這導(dǎo)致醫(yī)院系統(tǒng)與醫(yī)改監(jiān)測(cè)平臺(tái)存在指標(biāo)數(shù)據(jù)不完全一致的問題。因此,抓取的數(shù)據(jù)以二維表(見表1)的形式存儲(chǔ)在客戶端,該表中的指標(biāo)數(shù)據(jù)與醫(yī)院系統(tǒng)一一對(duì)應(yīng),便于跟蹤分析。同時(shí),按照醫(yī)改監(jiān)測(cè)平臺(tái)的指標(biāo)要求抓取醫(yī)院信息系統(tǒng)中“掛號(hào)費(fèi)”及“診查費(fèi)”,然后進(jìn)行匯總處理。

表1 指標(biāo)二維表

(2)數(shù)據(jù)描述一致性處理。

各醫(yī)院是根據(jù)自身特點(diǎn)建設(shè)的系統(tǒng),在某些描述方面可能存在不一致性,如“患者情況”這個(gè)指標(biāo)中,有的醫(yī)院將患者情況采用“1=感受較好,2=感受一般,3=感受較差,4=無感受”,而有的醫(yī)藥可能采用其他方式進(jìn)行描述。因此,在客戶端抓取到數(shù)據(jù)后要按醫(yī)改監(jiān)測(cè)平臺(tái)要求,對(duì)數(shù)據(jù)描述進(jìn)行一致性處理。最后,將清洗好的標(biāo)準(zhǔn)數(shù)據(jù)上傳至醫(yī)改監(jiān)測(cè)平臺(tái)。

2.2.4 數(shù)據(jù)質(zhì)量控制

醫(yī)改監(jiān)測(cè)平臺(tái)對(duì)數(shù)據(jù)的準(zhǔn)確性要求比較高,同時(shí)對(duì)響應(yīng)速度也有一定要求。為了更科學(xué)嚴(yán)謹(jǐn)?shù)赝瓿蓴?shù)據(jù)抓取過程,本采集系統(tǒng)通過以下3個(gè)方面進(jìn)行改進(jìn)。

(1)將指標(biāo)集根據(jù)系統(tǒng)進(jìn)行分類,如財(cái)務(wù)系統(tǒng)類指標(biāo)、HIS系統(tǒng)類指標(biāo)、RIS系統(tǒng)類指標(biāo)等。每一類指標(biāo)對(duì)于一個(gè)URL,即對(duì)應(yīng)一個(gè)網(wǎng)絡(luò)爬蟲。這樣即可保證指標(biāo)數(shù)據(jù)的準(zhǔn)確性,還可以通過并發(fā)方式提高響應(yīng)速度。

(2)部分醫(yī)療指標(biāo)數(shù)據(jù)具有階段性,如“門診人次數(shù)”可能因秋季感冒發(fā)病率高而劇增,因此采用分階段統(tǒng)計(jì)法對(duì)抓取的數(shù)據(jù)進(jìn)行準(zhǔn)確性驗(yàn)證。如果抓取的數(shù)據(jù)與統(tǒng)計(jì)值存在較大差異時(shí),發(fā)出系統(tǒng)警報(bào),采用人工方式對(duì)數(shù)據(jù)進(jìn)行確認(rèn)或重新抓取。

(3)根據(jù)醫(yī)改監(jiān)測(cè)指標(biāo)定義及審核條件對(duì)抓取數(shù)據(jù)進(jìn)行審核,如病床使用率定義為實(shí)際占用總床日數(shù)/實(shí)際開放總床日數(shù)×100%,且要求小于150%。抓取數(shù)據(jù)時(shí)按該定義進(jìn)行復(fù)核,如果病床使用率大于150%,則警報(bào)提示至人工核對(duì)處理。

3 應(yīng)用分析

自2017年啟動(dòng)重慶市公立醫(yī)院綜合改革以來,本中心針對(duì)226家參加改革的公立醫(yī)院設(shè)置了預(yù)約量、門急診量、醫(yī)務(wù)人員數(shù)量、醫(yī)生排班、醫(yī)生坐診日志、病床使用情況等116個(gè)基礎(chǔ)監(jiān)測(cè)指標(biāo)及醫(yī)療服務(wù)效率、質(zhì)量、病人醫(yī)藥費(fèi)用等40余項(xiàng)分析監(jiān)測(cè)指標(biāo),并將156個(gè)監(jiān)測(cè)指標(biāo)再次細(xì)分為多個(gè)細(xì)項(xiàng)數(shù)據(jù)。

經(jīng)測(cè)試,本采集系統(tǒng)可采集到涉及收入支出、醫(yī)療服務(wù)量、醫(yī)保報(bào)銷、分級(jí)診療、床位使用、醫(yī)師出診、重點(diǎn)人群服務(wù)及公立醫(yī)院改革情況等內(nèi)容的部分指標(biāo)(圖4為全市次均門診費(fèi)用指標(biāo)的明細(xì)列表),基本上可以滿足醫(yī)改監(jiān)測(cè)平臺(tái)要求。

圖4 全市次均門診費(fèi)用圖

其優(yōu)勢(shì)如下:

(1)開發(fā)成本低,各醫(yī)院不需承擔(dān)接口開放、升級(jí)等費(fèi)用,簡(jiǎn)單安裝即可上線使用;

(2)配置靈活,各醫(yī)院可根據(jù)自己的系統(tǒng)特點(diǎn)按醫(yī)改監(jiān)測(cè)平臺(tái)的指標(biāo)要求進(jìn)行配置即可,無需進(jìn)行系統(tǒng)改造,且不需考慮異構(gòu)系統(tǒng)帶來的問題;

(3)可滿足動(dòng)態(tài)調(diào)整指標(biāo)體系的需求。

本采集系統(tǒng)的不足之處在于初始化配置時(shí),工作量較大,且抓取的數(shù)據(jù)量較大時(shí)對(duì)HIS系統(tǒng)業(yè)務(wù)有一定影響(加大硬件性能可以解決或在業(yè)務(wù)較少期間進(jìn)行抓取)。

4 結(jié)束語

醫(yī)療大數(shù)據(jù)往往存在數(shù)量龐大、系統(tǒng)異構(gòu)等問題,如何快速獲取數(shù)據(jù)并解決系統(tǒng)異構(gòu)性是目前醫(yī)療衛(wèi)生信息化研究亟待解決的問題。文中采用網(wǎng)絡(luò)爬蟲技術(shù)在各異構(gòu)系統(tǒng)間進(jìn)行抓取,將全市各醫(yī)院的異構(gòu)系統(tǒng)構(gòu)成一個(gè)松散耦合結(jié)構(gòu),保證了數(shù)據(jù)的完整性、準(zhǔn)確性,提高了數(shù)據(jù)質(zhì)量和利用效率。所構(gòu)建的醫(yī)改監(jiān)測(cè)指標(biāo)數(shù)據(jù)庫,在醫(yī)療大數(shù)據(jù)的提取、分析方面具有一定實(shí)用價(jià)值。

猜你喜歡
爬蟲異構(gòu)瀏覽器
利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
試論同課異構(gòu)之“同”與“異”
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
反瀏覽器指紋追蹤
電子制作(2019年10期)2019-06-17 11:45:14
利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
電子制作(2017年9期)2017-04-17 03:00:46
overlay SDN實(shí)現(xiàn)異構(gòu)兼容的關(guān)鍵技術(shù)
LTE異構(gòu)網(wǎng)技術(shù)與組網(wǎng)研究
環(huán)球?yàn)g覽器
再見,那些年我們嘲笑過的IE瀏覽器
越西县| 龙州县| 涪陵区| 抚松县| 肇源县| 绥德县| 雷波县| 视频| 东辽县| 重庆市| 井冈山市| 阿尔山市| 安康市| 杭锦旗| 樟树市| 宜城市| 海丰县| 茂名市| 阳江市| 淮滨县| 蒲江县| 南溪县| 泸溪县| 泗阳县| 昌吉市| 科技| 河池市| 株洲县| 合作市| 巴塘县| 苍梧县| 开化县| 旺苍县| 两当县| 响水县| 武胜县| 观塘区| 乌海市| 清原| 县级市| 夏邑县|