У меня был настроен код и он работал нормально до последних двух дней. Это 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 и, особенно, в Интернете очистка - так что любая помощь будет принята с благодарностью!