Извлечение данных из URL VBA получение IE не поддерживает

#excel #vba #web-scraping #xmlhttprequest

Вопрос:

Я использовал следующий макрос Excel VBA для возврата данных с веб-сайта. Это работало нормально до тех пор, пока несколько дней назад веб-сайт не перестал поддерживать IE. Конечно, макрос просто не работает сейчас, так как на веб-странице нет данных, которые можно было бы вернуть в Excel, Есть ли способ использовать «Метод Get» (MSXML2.XMLHTTP)

вот мой код

     Public Sub GGGG()
        Dim MSX As Object
        Dim HTML As HTMLDocument
        Dim URL As String
        Dim UrlResponse As String
        Dim N As Long
        Dim sht1, sht2 As Worksheet

       ' On Error Resume Next
        Set MSX = CreateObject("MSXML2.XMLHTTP")
        Set HTML = New HTMLDocument
        

        URL = "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
                    
                    With MSX
                        .Open "GET", URL, False
                        .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
                        .send
                        UrlResponse = StrConv(.responseBody, vbUnicode)
                    End With

                       ActiveCell.Offset(0, 1) = UrlResponse

                    
    End Sub
 

Я получаю такой ответ

Ошибка При обработке вашего запроса произошла ошибка.

Ссылка #97.ec8a2c31.1621136928.281f3ca8

Пожалуйста, кто-нибудь может поддержать меня, как получить данные, когда IE не поддерживает дозу, я не эксперт в кодировании

Комментарии:

1. Это веб — сайт, а не браузер.

2. Я перепробовал множество браузеров и не браузерных методов, но безрезультатно.

3. Поскольку я думаю, что это веб-сайт, я бы сказал «нет». Я пробовал на разных языках — тот же результат. Влияет ли это на всех пользователей или на регион, я не знаю. Я сильно подозреваю, что это сайт.

4. Попробуйте перейти на эту страницу с помощью поиска на домашней странице.

5. Правильный URL — адрес для меня — использовать https://www.justdial.com/Agra/Yogi-General-Store-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET , который отлично работает в разных браузерах, кроме IE.

Ответ №1:

Хорошо, попробуйте сделать это, чтобы получить название и голоса с этого сайта, используя vba в сочетании с селеном.

 Sub FetchInfo()
    Dim driver As Object, oTitle As Object
    Dim oVotes As Object
    
    Set driver = CreateObject("Selenium.ChromeDriver")
    
    driver.get "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
    Set oTitle = driver.FindElementByCss("span.item > span", Raise:=False, timeout:=10000)
    Set oVotes = driver.FindElementByCss("span.rtngsval > span.votes", Raise:=False, timeout:=10000)
    Debug.Print oTitle.Text, oVotes.Text
End Sub
 

Ответ №2:

Когда веб-страница больше не будет поддерживать IE в будущем, вы можете попробовать веб-очистку с помощью Google Chrome с установленной новой надстройкой, пожалуйста, смотрите следующую ссылку для установки надстройки и инструкции по написанию в VBA. Однако, на мой взгляд, самый простой способ выполнить вашу работу-это использовать бесплатную версию сообщества Uipath, она работает для всех типов веб-браузеров.

Руководство по VBA: https://www.wiseowl.co.uk/vba-macros/videos/vba-scrape-websites/web-scraping-selenium-chrome/

Установка библиотеки VBA для Selenium: https://code.google.com/archive/p/selenium-vba/downloads

Комментарии:

1. Я пробую с селеновым хромом … та же проблема все еще продолжается

2. Довольно неприятно это слышать, если VBA доставляет вам много хлопот, есть и другие инструменты, которые всегда могут вам помочь. Поставляется с веб-автоматизацией, VBA не всегда мой предпочтительный инструмент. Удачи и надеюсь, что вы сможете решить эту проблему!!

Ответ №3:

Вероятно, вам нужно установить эмуляцию браузера функций на ноль, как подробно описано Даниэлем здесь:

Все, что Вы Никогда Не Хотели Знать Об Элементе Управления веб-браузером доступа

Тем не менее, ваш URL-адрес не работает даже при открытии в Edge Chromium, поэтому сайт может пострадать от общего сбоя.