Excel VBA XML HTTP-запрос для очистки таблицы на странице с входом - PullRequest
0 голосов
/ 10 июля 2020

У меня был настроен код и он работал нормально до последних двух дней. Это HTTP-запрос Excel VBA XML для очистки таблицы на веб-странице, которая находится за входом в систему с платным доступом, на который я подписан.

Дело в том, что код отлично работал в течение нескольких недель. Я узнал, что есть некоторые правила с веб-сайтом, где он ограничивает количество входов в систему на нескольких устройствах / браузерах (т. Е. - если я вручную войду в Inte rnet Explorer, он предложит мне снова войти в систему на Chrome если я обновлю sh страницу там). Я расстроен, потому что он работал так хорошо без явной необходимости писать какой-то код для входа в систему.

Вот с чем я работал:

Option Explicit

    Sub ETR_150_XMLHTTP()

    Dim XMLPage As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument

    Application.ScreenUpdating = False

    XMLPage.Open "GET", "https://www.establishtherun.com/evan-silvas-top-150-2020/", False
    XMLPage.send

    If XMLPage.Status <> 200 Then
      MsgBox XMLPage.Status & " - " & XMLPage.statusText
      Exit Sub
    End If

    HTMLDoc.body.innerHTML = XMLPage.responseText

    ProcessHTMLPage HTMLDoc

    End Sub



    Sub ProcessHTMLPage(HTMLPage As MSHTML.HTMLDocument)

    Dim HTMLTable As MSHTML.IHTMLElement
    Dim HTMLTables As MSHTML.IHTMLElementCollection
    Dim HTMLRow As MSHTML.IHTMLElement
    Dim HTMLCell As MSHTML.IHTMLElement
    Dim RowNum As Long, ColNum As Integer

    Set HTMLTables = HTMLPage.getElementsByTagName("table")

    For Each HTMLTable In HTMLTables

        Sheets("XMLHTTP").Select
    
        RowNum = 1
        For Each HTMLRow In HTMLTable.getElementsByTagName("tr")
        
            ColNum = 1
            For Each HTMLCell In HTMLRow.Children
                Cells(RowNum, ColNum) = HTMLCell.innerText
                ColNum = ColNum + 1
            Next HTMLCell
        
            RowNum = RowNum + 1
        Next HTMLRow
    
    Next HTMLTable

    End Sub

Это есть ли для меня простой и легкий способ указать коду для входа в систему (при необходимости), чтобы иметь доступ к странице / таблице для парсинга?

Я все еще относительно новичок в VBA и, особенно, в Интернете очистка - так что любая помощь будет принята с благодарностью!

...