我使用 xhr 编写了一个脚本来解析来自该网站的第一篇文章的链接,然后将link
和传递http
给一个函数以从它的内页获取标题。重要的是我将 thelink
和 the都传递http
给函数,以便重用我一开始使用的相同 http。
我的脚本似乎以正确的方式工作,但我不确定我是否以正确的方式完成了整个事情。我感到困惑的原因是当我使用 like 时我得到了结果getHTTP(ByVal Http, ByVal link) As Variant
。当我选择getHTTP(ByVal Http, ByVal link) As String
or时,我什至得到了结果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
为了重用相同的http,在子和函数之间传递http的正确方法是什么?