藥品交互作用網頁文字轉存成格式化的資料表 - Challenge
在經過前面 4 篇「列轉欄」的修練後,我來分享一個在工作上實際的案例,步驟雖然簡單,卻是滿滿的干貨。 這是一個醫藥界位居翹楚的 MicromeXXX「藥品交互作用查詢結果」的網頁,我希望將它轉換成 excel 資料表,以便能匯入到 HIS 使用。以下是一些特性與限制: 網頁文字可以複制。 網頁原始碼檢視只能看到一些程式碼以及版權宣告,完完全全找不到任何網頁的內文,也就是說想要依靠解析網頁原始碼中的 HTML 標簽來擷取資料這招,在這裡無用武之地。 由於這網頁內容是付費資料,醫院雖有購買,但不代表著可以將它大勒勒的曝露在大眾面前,所以一切敏感內容都被遮蔽! 【網頁文字轉存成格式化的資料表 】關鍵的部份完成後,接下來若想要全流程自動化,那麼我會把院內每個藥品的交互作用網址 URL 存成 EXCEL 檔,用 VBA 寫迴圈,每季按一鍵就去抓取院內千百個藥品"最新"的交互作用資料,並且再讓它比對一下和上次抓取的檔案是否有更新,有更新的再丟給 HIS 去滙入,這樣就達到了徹底懶人化的目標囉~~~~ 檔案下載: 藥品交互作用網頁文字轉存成格式化的資料表 Thst’s begin~~ 這是一個藥品交互作用網頁,內容呈現 CLOPIDOGREL 這藥品與下面哪些藥品有交互作用,以及一些特性的敘述。 網頁原始碼: Ctrl+A 全選內容後,Ctrl+C 複製。 選擇性貼上→文字 ,貼到 excel 。 (如果只是單純地貼上,或貼上HTML,都會有換行及空白行) 內容看起來就像這樣。 在進入 Power Query 之前,我們先看一下整體資料長成什麼樣子。 前面 5 列是要移除的,藥名之下的就是一些特性,似乎都是以 數字) 的方式來列表 再往下看一看,8) 裡面的列表是以 英文) 的方式來呈現。 到這裡我可以歸納出一個規則,藥名就是文字內沒有 “)” 符號,特性就是有 “)” 符號。 拉到最尾段,最後有 4 列也是我不要的。 資料格式分析完後,就可正式進入 Power Query 了 step 1 - 移除頂端 5 列。 step 2 - 移除底端 4 列。 目前看起來像這樣。 step 3 - 為了要將資料分組,我需要加入一行輔助資料行,用來判斷從第n列到第n列是同一組資料。 是藥名的就直接帶出藥名,不是藥名的就代入 null 。 s