2016-02-13 134 views
1

不會說英語。刮掉html數據Vba

需要一些幫助,我想打從一個網站 的部分中提取數據的功能如下的HTML網站 CODE HTML

碼功能。

Function GetElementById(url As String, id As String, Optional isVolatile As Boolean) 
    Application.Volatile (isVolatile) 
    On Error Resume Next 
    Dim html As Object, objResult As Object 
    ret = GetPageContent(url) 
    Set html = CreateObject("htmlfile") 
    html.Body.innerHtml = ret 
    Set objResult = html.GetElementById(id) 
    GetElementById = objResult.innerHtml 
End Function 

我需要一個只提取類「面板體」直接進入 的功能,我認爲這將是。孩子(3)不知道,你能幫幫我嗎?所以它是實用和快速的,因爲我需要提取超過50個站點。

謝謝

回答

0

我看到至少有兩個選項。

  1. 一旦你擁有id = Result的HTMLDivElement,你就可以簡單地得到子元素。請首先測試objResult.Children(2)並檢查返回的元素是什麼。

    objResult.Children(2)。兒童(0)。兒童(0)

  2. 第二個是,在MSHTML的後續版本,我認爲與IE8或更高版本你有方法「getElementsByClassName方法」這將返回IHTMLElements的集合。如果HTMLDocument只有1個「panel-body」,那麼你很幸運。如果沒有,你需要遍歷每一個,並檢查一些其他獨特的功能,以知道你有正確的。

+0

我嘗試了兩種方式, (1)它毫無結果 設置objResult = html.GetElementById(ID) 的getElementById = objResult.Children(2)。兒童(0)。兒童(0).innerHTML (2)導致0 Set objResult = html.GetElementById(id) GetElementById = objResult.Children(2).innerHTML –

0

爲此作業生成代碼的另一種方法是錄製一個宏,然後在錄製的宏周圍添加一個循環,循環遍歷您的50個頁面並獲取結果。

在功能區的數據選項卡上有一個選項從外部來源獲取數據。如果你使用它,它會給你一個點擊界面,讓你選擇你想要的桌子。當你這樣做的時候記錄一個宏,它會爲你生成代碼。