作者endoxans (艾德尚)
看板Office
標題[算表] asp網頁表格無法以excel讀取
時間Tue Jan 15 21:49:58 2019
軟體:excel
版本:2016
用excel資料匯入的方式抓取asp的資料
https://www7.vghtpe.gov.tw/drugsh/asp/result.asp 好像只能抓出外層
內部資料都無法顯示
想請問版上前輩是否有辦法解決
(或者需要以爬蟲程式才有辦法
感謝解答~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.26.109.8
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1547560200.A.C02.html
→ soyoso: 如不行的話,就以巨集協助試試 01/15 21:59
→ soyoso: google excel vba ie automation asp|dynamic web 01/15 21:59
→ shengvia: 請問該網頁要輸入什麼查的到資料 01/15 22:17
→ shengvia: 才 01/15 22:18
→ soyoso: 原文網址是查詢後結果的網址,可按左側重新查詢,回到查詢 01/15 22:30
→ soyoso: 頁 01/15 22:30
→ endoxans: 目前先一個一個查,來日研究VBA and python~XD 01/15 22:39
推 waiter337: google selenium chrome vba 01/15 22:52
→ waiter337: 百度那邊也有資料 01/15 22:53
→ waiter337: 還有chrome商店 selenium IDE 01/15 22:54
→ waiter337: 你要抓內部 試試看上面這個 01/15 22:55
→ waiter337: Katalon 也可以試試 但這個我沒試過 01/15 22:57
→ waiter337: 實作上可以參考水管 01/15 22:58
→ waiter337: 但水管上的寫法是比較久一點的版本 01/15 22:59
→ waiter337: 要這樣 01/15 23:00
→ waiter337: Dim driver As selenium.ChromeDriver 01/15 23:01
→ waiter337: Sub openWEBchrome() 01/15 23:01
→ waiter337: Set driver = CreateObject("Selenium.ChromeDriver") 01/15 23:01
→ waiter337: driver.Get url 01/15 23:02
→ waiter337: driver.Wait 1000 01/15 23:03
→ waiter337: driver.Quit 01/15 23:03
→ waiter337: End Sub 01/15 23:03
→ waiter337: 要安裝軟體 安裝chromedrive 執行start chrome 01/15 23:05
→ waiter337: 設定引用項目 01/15 23:05
→ soyoso: 這個查詢以ie automation來看的話 01/15 23:06
→ soyoso: 查詢網頁來看的話,藥品名稱name為DN,國際條碼為"IBC" 01/15 23:07
→ soyoso: 健保碼"NHIC",UD碼"UDN",可以document.all、all.item 01/15 23:07
→ soyoso: 或documnet.getelementsbyname將value帶入儲存格的值或字 01/15 23:07
→ soyoso: 串 01/15 23:07
→ soyoso: 開始搜尋為"btnDO81E0",按下為click 01/15 23:07
→ soyoso: 要複製表格的話body.innerhtml指定getelementsbytagname為 01/15 23:07
→ soyoso: table,再以execwb來全選複製於儲存格 01/15 23:07
→ soyoso: 以ie的話則不用安裝其他軟體 01/15 23:08
→ waiter337: 藥品名稱 name=DN 或 xpath=//input[@name='DN'] 01/15 23:11
→ waiter337: 國際條碼 name=IBC 或 xpath=//tr[3]/td[2]/input 01/15 23:12
→ waiter337: 健保碼 name=NHIC 或 xpath=//tr[4]/td[2]/input 01/15 23:12
→ waiter337: UD碼 name=UDN 或 xpath=//tr[5]/td[2]/input 01/15 23:13
→ waiter337: 開始搜尋 name=btnDO81E0 01/15 23:13
→ waiter337: 或xpath=//input[@name='btnDO81E0'] 01/15 23:13
→ waiter337: 重新輸入 name=btnReSet 01/15 23:14
→ waiter337: 或xpath=//input[@name='btnReSet'] 01/15 23:14
→ waiter337: 彈出警告確定 xpath=//input[@name='btnDO81E0'] 01/15 23:15
→ waiter337: 抱歉 彈出警告確定 不是這個元素 01/15 23:16
→ soyoso: 如不抓表格只要表格內的資料的話,split分割outerhtml再抓 01/15 23:18
→ soyoso: 出 01/15 23:18
→ waiter337: 彈出警告大概只能靠迴圈搜索新元素物件 沒彈出 sedkey 01/15 23:19
→ waiter337: 按下確定來跳開 或者drive.Qiit關閉重開來迴避 01/15 23:19
→ waiter337: sendkey 01/15 23:20
→ waiter337: 好像selenium或其他爬蟲有支援python錄製自動寫巨集 01/15 23:22
→ waiter337: 的功能 01/15 23:22
→ waiter337: 就是你錄製好你的動作,他會直接給你程式碼 01/15 23:23
→ waiter337: 然後你再丟到python裡面就能跑了,水管上看有沒有人教 01/15 23:23
→ soyoso: 以彈出警告,測試可以execScript "window.alert = 01/15 23:32
→ soyoso: function() {}" 阻止彈出 01/15 23:33
→ waiter337: 感謝 原來有這招 01/15 23:34
→ endoxans: 感謝神人們,小弟明天就來練練看 01/15 23:38