2016-02-13 4 views
1

не владею английским языком.Scrape html data 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 

мне нужно, что извлекает только класс «панель-тело» непосредственно в функцию, я думаю, что это будет .children (3) не знаю, не могли бы вы мне помочь? и так, что это практично и быстро, потому что мне нужно извлечь более 50 сайтов.

спасибо

ответ

0

Я вижу как минимум два варианта.

  1. Как только у вас есть HTMLDivElement с id = Result, вы можете просто получить детей. Проверьте это, сначала выполнив objResult.Children (2) и проверив, что возвращается элемент.

    objResult.Children (2) .children (0) .children (0)

  2. Во-вторых, в более поздних версиях MSHTML я думаю, что с IE8 или более поздней версии у вас есть метод "GetElementsByClassName" Это будет вернуть коллекцию IHTMLElements. Если HTMLDocument имеет только 1 «панель-тело», то вам повезло. Если нет, вам нужно будет пройти через каждый из них и проверить еще одну уникальную функцию, чтобы знать, что у вас есть правильный.

+0

Я попробовал два пути, (1) Это к чему не привели Set objResult = html.GetElementById (идентификатор) GetElementById = objResult.Children (2) .children (0) .children (0) .innerHTML (2) Результатов: 0 Set objResult = html.GetElementById (id) GetElementById = objResult.Children (2) .innerHTML –

0

Другой способ создания кода для этого задания - записать макрос, а затем добавить цикл вокруг записанного макроса, который проходит через ваши 50 страниц и получает результаты.

На вкладке данных на ленте есть опция получения данных из внешних источников. Если вы используете это, вы получите интерфейс точки и щелчка, который позволит вам выбрать таблицу, которую вы ищете. Запишите макрос, пока вы это делаете, и он генерирует код для вас.