Excel VBA Web Scraping IE Метод NAVIGATE Работает против MSXML2.XMLHTTP60 не работает - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь получить один параметр с веб-сайта NSE, URL-адрес https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuoteFO.jsp?underlying=INDUSINDBK&instrument=FUTSTK&type=-&strike=-&expiry=30APR2020

Я могу очистить все, что захочу, используя IE .Navigate ( Inte rnet explorer) (который открывает браузер и получает данные), но это занимает много времени, я хочу, чтобы результаты были извлечены быстро, поэтому я решил go с помощью метода "MSXML2.XMLHTTP60", когда я попробуйте, текст ответа, он возвращает внутреннюю ошибку сервера

Здесь ниже я дал мои оба кода, пожалуйста, помогите мне для очистки данных в методе MSXML2.XMLHTTP60

1 Ответ

0 голосов
/ 20 апреля 2020

Этот код работает нормально для меня. Он использует как XMLHTTP, так и MS HTML, поэтому побочные эффекты от компонентов отсутствуют:

Sub xxx()
    Dim xhr As New MSXML2.XMLHTTP60
    Dim html As New MSHTML.HTMLDocument

    With xhr
        .Open "GET", "https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuoteFO.jsp?underlying=BEL&instrument=FUTSTK&type=-&strike=-&expiry=30APR2020#", False
        .send
        'Debug.Print StrConv(.responseBody, vbUnicode)
        html.body.innerHTML = StrConv(.responseBody, vbUnicode)

    End With
    Debug.Print html.body.innerHTML

    Set xhr = Nothing
End Sub

Возможно, проблема не в XMLHTTP. У вас там есть прокси-серверы HTTP? Если IE работает, но XMLHTTP нет, это означает, что IE использует системные настройки для http-прокси, а XMLHTTP - нет. Поэтому вы должны инициализировать его с вашим прокси. У него есть метод setProxy. Кстати, если объект объявлен как новый, вам не нужно повторно инициализировать его с помощью CreateObject:

    Dim ie As New InternetExplorer
    Set ie = CreateObject("InternetExplorer.Application")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...