Я написал сценарий, использующий xhr, чтобы проанализировать ссылку на первое сообщение с этого веб-сайта , а затем передал link
и http
функции для извлечения заголовка из его внутренней страница. Важно, чтобы я передал функции link
и http
, чтобы использовать их повторно. .
Кажется, мой сценарий работает в правильно, но я не уверен, что все сделал правильно. Причина моего замешательства в том, что я получаю результат, когда использую как getHTTP(ByVal Http, ByVal link) As Variant
. Я даже получаю результат, когда я go вместо getHTTP(ByVal Http, ByVal link) As String
или getHTTP(ByVal Http, ByVal link)
. Более того, я не определил явно link as String
или Http as XMLHTTP60
в параметрах функции.
Я пробовал (работает безупречно):
Function getHTTP(ByVal Http, ByVal link) As Variant
Dim Html As New HTMLDocument, oTitle$
With Http
.Open "GET", link, False
.send
Html.body.innerHTML = .responseText
oTitle = Html.querySelector("h1[itemprop='name'] > a").innerText
getHTTP = oTitle
End With
End Function
Sub GetInfo()
Const base$ = "https://stackoverflow.com"
Const Url$ = "https://stackoverflow.com/questions/tagged/web-scraping"
Dim Http As New XMLHTTP60, Html As New HTMLDocument
Dim firstLink$, postTitle$
With Http
.Open "GET", Url, False
.send
Html.body.innerHTML = .responseText
firstLink = base & Replace(Html.querySelector(".summary .question-hyperlink").getAttribute("href"), "about:", "")
postTitle = getHTTP(Http, firstLink)
MsgBox postTitle
End With
End Sub
Как правильно сделать то же самое, сохранив существующий logi c нетронутым?