2013-09-27 106 views
2

我有一個解析HTML頁面以查找具有指定ID的元素的腳本。我需要的是獲得父節點(實際上,我需要去2個父節點),以便我可以循環訪問表中的所有鏈接,以查找我想要的鏈接或所以我可以解析整個HTML表找到我想要的鏈接。VBA獲取元素的父節點

Sub testmacro() 

'Constants 
Const pdlID = "Id of the element" 
Const urlbase = "what ever url" 

'containers 
Dim web As Object 
Dim prompt As String 
Dim pdlTbl As Object 
Dim pdllink As Object 


'Get URL 
prompt = InputBox("Paste the URL here: ", "URL") 

'create IE instance 
Set web = CreateObject("InternetExplorer.Application") 
web.Visible = True 
web.Navigate prompt 

Do While web.Busy Or web.ReadyState <> 4 
    DoEvents 
Loop 

'get IE document 
Set pdlTbl = web.Document 
Set pdlTbl = pdlTbl.getelementbyid(pdlID) 

'Get parent node of element 

web.Quit 
Set web = Nothing 

End Sub 

我試圖找到關於獲取父節點的信息,但我不能如此幫助找到父節點會很好。

此外,我有重大問題試圖循環通過文檔中的元素。我從這個網站抓取了許多代碼示例,並且他們都返回了相同的錯誤「對象不支持這種方法」或者其他的東西。這是看起來像這樣的循環的第一行高亮。

for each a in pdltbl 

next a 

這個錯誤就出來了,不管我試圖使用標籤或我通過看元素的類型(pdlID是指用於參考的TD元素)

基本上,我只是想能夠通過查找表來找到特定的URL的鏈接(基於關中提示的網址)

+0

您的循環問題尚不清楚 - 您如何設置「pdllink」的值? –

+0

回顧上面的編輯:設置pdllink的方式與設置pdltbl的方式相同 – gNerb

+0

'getElementbyid'返回單個節點(標識在文檔中必須是唯一的),而不是集合:不能使用For Each。 –

回答

2
Set pdlTbl = pdlTbl.getelementbyid(pdlID) 
Set parentParent = pdlTbl.parentElement.parentElement 

得到表中的所有鏈接:

Set allLinks = tbl.getElementsByTagName("a") 
For Each a in allLinks 
    '... 
Next a