看板 Office 關於我們 聯絡資訊
(若是和其他不同軟體互動之問題 請記得一併填寫) 軟體: 版本:excel office 2010 有用excel在網路抓取資料的需求,在網路上找的了這段code,但是把所有標籤抓下來之後在innertext 儲存格內會有script 另外有找到也是別人的檔案,code大同小異但他的innertext內就不會有script 網頁相關的知識比較薄弱,想請問一下為什麼會這樣,要怎麼解決 謝謝 作者:黄晨 链接:https://www.zhihu.com/question/20460385/answer/71447219 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 Sub getPageInfo() With CreateObject("internetexplorer.application") .Visible = True .Navigate [URL] While .ReadyState <> 4 Or .Busy DoEvents Wend Set dmt = .Document For i = 0 To dmt.all.Length - 1 Set htMent = dmt.all(i) With ActiveSheet .Cells(i + 2, "A") = htMent.tagName .Cells(i + 2, "B") = TypeName(htMent) .Cells(i + 2, "C") = htMent.ID .Cells(i + 2, "D") = htMent.Name .Cells(i + 2, "E") = htMent.Value .Cells(i + 2, "F") = htMent.Text .Cells(i + 2, "G") = htMent.innerText End With Next i Set r = Nothing .Quit End With MsgBox "获取页面信息成功!" End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.51.169.144 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1473575581.A.359.html Metal5566:轉錄至看板 Visual_Basic 09/11 14:35
waiter337: 一種方式 想辦法抓左邊第三個數字開始 通常左邊兩個空 09/11 21:29
waiter337: 白 (看不見的) 09/11 21:29
waiter337: 如果 你只是要查資料 那原始檔應該沒必要修改 09/11 21:29
waiter337: 到時候用serch 查內部文字 應該就好了 09/11 21:29
waiter337: 測試是否有隱藏空白的方式 09/11 21:30
waiter337: 貼上純文字檔後,在上方輸入列,的第一個字左邊,按三 09/11 21:32
waiter337: 下左然後打個1,接著按右看幾下才跳過去,那中間就是 09/11 21:32
waiter337: 藏了幾個空白 09/11 21:32
waiter337: 或者丟檔上來 等晚點在測試 09/11 21:33
waiter337: 補充 那個空白 並不等於空白,所以,你也可以直接複製 09/11 21:35
waiter337: 整個儲存格作參照 09/11 21:35
Metal5566: 看了上面的做法不是很懂 09/12 07:30
Metal5566: http://imgur.com/a/oGFYj 這是有問題的CODE和結果 09/12 07:30
Metal5566: 網頁是 http://www.oddsportal.com/ 09/12 07:36
Metal5566: 然後進去賽事的頁面 有電視圖示的就是SCRIPT所在 09/12 07:37
Metal5566: http://imgur.com/a/vNo3q 如圖 09/12 07:38
Metal5566: 我有問到是說 innertext 是把其下標籤的innertext也算 09/12 07:39
Metal5566: 所以TABLE標籤或甚麼的裡面會有SCRIPT標籤的INNERTEXT 09/12 07:40
Metal5566: 想知道怎麼避免不要抓到那段SCRIPT 09/12 07:40
soyoso: http://imgur.com/a/TYtKB 類似這樣 09/12 08:25
soyoso: 謝謝你,算是成功了 想請問為什麼把.document.body.innerHTML 改成 .document.getElementById("tournamenttable").outerHTML 那些script就抓不到了呢 再來為甚麼可以直接用ExecWB 17, 0 和12,0 直接全選複製呢? 最後我的表格抓出來和你的差別是在我要的地方上面還有其他東西,如圖 http://imgur.com/a/oBYqx 請問要怎麼處理呢 *目前用的網址(有小電視圖標,就是那段討厭的SCRIPT): http://www.oddsportal.com/tennis/japan/wta-tokyo/ 謝謝你的幫忙!
soyoso: 測試上,上面無出現回文連結內所出現的資料 09/12 11:17
soyoso: http://imgur.com/a/8awxN 09/12 11:17
soyoso: 以execwb的部分複製所見的網頁內容(文字、表格、超連結... 09/12 11:31
soyoso: ),而非抓取原始碼的資料 09/12 11:34
Metal5566: http://imgur.com/a/fXV5L 錯誤的是.document.body.inn 09/12 14:14
Metal5566: ......那行 弄了很久不知道為甚麼會這樣 元素不給改嗎? 09/12 14:15
Metal5566: 也都有引用MS INTERNETCONTROL 和ms html library 09/12 14:37
soyoso: https://youtu.be/MCzc3s2fKY4 測試上無出現回文的錯誤 09/12 14:55
soyoso: 也無引用回文的二個項目 http://imgur.com/a/Q8OPC 09/12 14:56
非常謝謝 SOYOSO 花了這麼多時間幫忙確認 用了兩台電腦試(excel2010,2013)試 一樣都是錯誤424:此處需要物件 希望版上前輩能幫忙看看 https://pan.baidu.com/s/1kVi5mgn 只是要確認裡面的網址是有上面我說明的那段SCRIPT的網頁 謝謝大家 麻煩了 ※ 編輯: Metal5566 (59.115.113.160), 09/12/2016 16:21:33
soyoso: 執行未出現錯誤424,另一處出現http://imgur.com/a/QNq63 09/12 16:50
Metal5566: 好的 再次感謝 我再找第三台電腦試試 09/12 17:19
waiter337: 同樓上,我也卡在424 09/13 02:34
waiter337: 研究中= = 09/13 02:45
soyoso: 原本測試ie版本為ie8是可行的,到ie11時則會出現錯誤424 09/13 08:56
soyoso: http://imgur.com/a/9dRih 改為這樣測試於ie11則無出現錯 09/13 08:58
soyoso: 誤,引用項目方面請勾選 09/13 08:59
Metal5566: 謝謝你 ok了 沒想到是ie的關係 想知道為什麼要這樣設 09/13 09:35
Metal5566: 變數呢? 09/13 09:35
soyoso: 因引用項目,所以將變數指定明確的型態 09/13 10:08
waiter337: 已跪 09/13 13:16