作者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://webptt.com/m.aspx?n=bbs/Office/M.1547560200.A.C02.html
1F:→ soyoso: 如不行的話,就以巨集協助試試 01/15 21:59
2F:→ soyoso: google excel vba ie automation asp|dynamic web 01/15 21:59
3F:→ shengvia: 請問該網頁要輸入什麼查的到資料 01/15 22:17
4F:→ shengvia: 才 01/15 22:18
5F:→ soyoso: 原文網址是查詢後結果的網址,可按左側重新查詢,回到查詢 01/15 22:30
6F:→ soyoso: 頁 01/15 22:30
7F:→ endoxans: 目前先一個一個查,來日研究VBA and python~XD 01/15 22:39
8F:推 waiter337: google selenium chrome vba 01/15 22:52
9F:→ waiter337: 百度那邊也有資料 01/15 22:53
10F:→ waiter337: 還有chrome商店 selenium IDE 01/15 22:54
11F:→ waiter337: 你要抓內部 試試看上面這個 01/15 22:55
12F:→ waiter337: Katalon 也可以試試 但這個我沒試過 01/15 22:57
13F:→ waiter337: 實作上可以參考水管 01/15 22:58
14F:→ waiter337: 但水管上的寫法是比較久一點的版本 01/15 22:59
15F:→ waiter337: 要這樣 01/15 23:00
16F:→ waiter337: Dim driver As selenium.ChromeDriver 01/15 23:01
17F:→ waiter337: Sub openWEBchrome() 01/15 23:01
18F:→ waiter337: Set driver = CreateObject("Selenium.ChromeDriver") 01/15 23:01
20F:→ waiter337: driver.Get url 01/15 23:02
21F:→ waiter337: driver.Wait 1000 01/15 23:03
22F:→ waiter337: driver.Quit 01/15 23:03
23F:→ waiter337: End Sub 01/15 23:03
24F:→ waiter337: 要安裝軟體 安裝chromedrive 執行start chrome 01/15 23:05
25F:→ waiter337: 設定引用項目 01/15 23:05
26F:→ soyoso: 這個查詢以ie automation來看的話 01/15 23:06
27F:→ soyoso: 查詢網頁來看的話,藥品名稱name為DN,國際條碼為"IBC" 01/15 23:07
28F:→ soyoso: 健保碼"NHIC",UD碼"UDN",可以document.all、all.item 01/15 23:07
29F:→ soyoso: 或documnet.getelementsbyname將value帶入儲存格的值或字 01/15 23:07
30F:→ soyoso: 串 01/15 23:07
31F:→ soyoso: 開始搜尋為"btnDO81E0",按下為click 01/15 23:07
32F:→ soyoso: 要複製表格的話body.innerhtml指定getelementsbytagname為 01/15 23:07
33F:→ soyoso: table,再以execwb來全選複製於儲存格 01/15 23:07
34F:→ soyoso: 以ie的話則不用安裝其他軟體 01/15 23:08
35F:→ waiter337: 藥品名稱 name=DN 或 xpath=//input[@name='DN'] 01/15 23:11
36F:→ waiter337: 國際條碼 name=IBC 或 xpath=//tr[3]/td[2]/input 01/15 23:12
37F:→ waiter337: 健保碼 name=NHIC 或 xpath=//tr[4]/td[2]/input 01/15 23:12
38F:→ waiter337: UD碼 name=UDN 或 xpath=//tr[5]/td[2]/input 01/15 23:13
39F:→ waiter337: 開始搜尋 name=btnDO81E0 01/15 23:13
40F:→ waiter337: 或xpath=//input[@name='btnDO81E0'] 01/15 23:13
41F:→ waiter337: 重新輸入 name=btnReSet 01/15 23:14
42F:→ waiter337: 或xpath=//input[@name='btnReSet'] 01/15 23:14
43F:→ waiter337: 彈出警告確定 xpath=//input[@name='btnDO81E0'] 01/15 23:15
44F:→ waiter337: 抱歉 彈出警告確定 不是這個元素 01/15 23:16
45F:→ soyoso: 如不抓表格只要表格內的資料的話,split分割outerhtml再抓 01/15 23:18
46F:→ soyoso: 出 01/15 23:18
47F:→ waiter337: 彈出警告大概只能靠迴圈搜索新元素物件 沒彈出 sedkey 01/15 23:19
48F:→ waiter337: 按下確定來跳開 或者drive.Qiit關閉重開來迴避 01/15 23:19
49F:→ waiter337: sendkey 01/15 23:20
50F:→ waiter337: 好像selenium或其他爬蟲有支援python錄製自動寫巨集 01/15 23:22
51F:→ waiter337: 的功能 01/15 23:22
52F:→ waiter337: 就是你錄製好你的動作,他會直接給你程式碼 01/15 23:23
53F:→ waiter337: 然後你再丟到python裡面就能跑了,水管上看有沒有人教 01/15 23:23
54F:→ soyoso: 以彈出警告,測試可以execScript "window.alert = 01/15 23:32
55F:→ soyoso: function() {}" 阻止彈出 01/15 23:33
56F:→ waiter337: 感謝 原來有這招 01/15 23:34
57F:→ endoxans: 感謝神人們,小弟明天就來練練看 01/15 23:38