Получение определенных данных с веб-сайта через Excel

Я пытаюсь сделать что-то очень похожее на приведенный ниже пример: эталонная проблема

За одним небольшим исключением, мне нужно вывести только рейтинг и количество отзывов для этого списка в 2 отдельные ячейки в Excel.

Как мне это сделать, не вытягивая данные всего сайта? Кажется, мне нужно вызвать определенный тег html или использовать команду для этого, но я не знаю, что это такое.

Пожалуйста помоги!


person user3558159    schedule 21.04.2014    source источник
comment
какой адрес интересующего вас веб-сайта?   -  person ron    schedule 22.04.2014
comment
вот хороший пример:http://example.com   -  person user3558159    schedule 23.04.2014


Ответы (1)


Этот код извлечет две запрошенные вами части информации и поместит их на активный лист.

Sub test()
    my_url = "http://www.yelp.com/biz/if-boutique-new-york"
    Set html_doc = CreateObject("htmlfile")
    Set xml_obj = CreateObject("MSXML2.XMLHTTP")

    xml_obj.Open "GET", my_url, False
    xml_obj.send
    html_doc.body.innerhtml = xml_obj.responseText
    Set xml_obj = Nothing

    Set Results = html_doc.body.getElementsByTagName("i")
    For Each itm In Results
        If InStr(1, itm.outerhtml, "star-img", vbTextCompare) > 0 Then
            numb_stars = itm.getAttribute("title")
            Exit For
        Else
        End If
    Next

    Set Results = html_doc.body.getElementsByTagName("span")
    For Each itm In Results
        If InStr(1, itm.outerhtml, "reviewCount", vbTextCompare) > 0 Then
            numb_rev = itm.innertext
            Exit For
        Else
        End If
    Next

    ActiveCell = numb_stars
    ActiveCell.Offset(1, 0) = numb_rev
End Sub
person ron    schedule 23.04.2014
comment
Это потрясающе! На самом деле это первый вопрос, который я задал на этом сайте, поэтому я рад видеть такие хорошие и быстрые ответы! Благодарю вас! Еще одна вещь: возможно ли динамически изменить URL-адрес, используя ссылку на ячейку в переменной my_url? И запустить скрипт, скажем, на список из 10 разных URL-адресов (от a1:a10)? - person user3558159; 24.04.2014
comment
Да, динамическое обновление URL-адреса не проблема. Предложенный вами метод должен работать нормально. Если мой ответ был полезен, отметьте его как принятый, спасибо. - person ron; 24.04.2014
comment
Также есть ли способ ускорить время запроса? - person user3558159; 24.04.2014
comment
Это самый быстрый метод, о котором я знаю, определенно быстрее, чем открытие экземпляра IE. - person ron; 24.04.2014