Вам нужно использовать querySelectorAll и индексировать его во время первого цикла, чтобы гарантировать, что вы получите различное время постов.Я хотел бы хранить их в коллекции и обращаться к ним по индексу в последнем цикле
Option Explicit
Public Sub CollectData()
Const baseUrl = "https://stackoverflow.com"
Dim Http As New XMLHTTP60, Html As New HTMLDocument
Dim post As Object, itemlist$, linklist As Variant, i As Long
Dim qualifiedLink$, nlink As Variant, postTime$, postTitle$
Dim times As Object
Set times = New Collection
With Http
.Open "GET", "https://stackoverflow.com/questions/tagged/web-scraping", False
.send
Html.body.innerHTML = .responseText
End With
Set post = Html.querySelectorAll(".summary .question-hyperlink")
For i = 0 To post.Length - 1
postTime = Html.querySelectorAll(".user-action-time").item(i).innerText
times.Add postTime
qualifiedLink = baseUrl & Split(post(i).getAttribute("href"), "about:")(1)
itemlist = itemlist & IIf(itemlist = "", "", " ") & qualifiedLink
Next i
linklist = Split(itemlist, " ")
Dim accessor As Long
For Each nlink In linklist
accessor = accessor + 1
With Http
.Open "GET", nlink, False
.send
Html.body.innerHTML = .responseText
End With
postTitle = Html.querySelector("h1[itemprop='name'] a").innerText
' the following line prints postTime derived from earlier loop
Debug.Print times(accessor), postTitle
Next nlink
End Sub
Еще лучше, хранить время в переменной, а не продолжать использовать querySelectorAll
в цикле, так как это будетбыть более эффективным:
Option Explicit
Public Sub CollectData()
Const baseUrl = "https://stackoverflow.com"
Dim Http As New XMLHTTP60, Html As New HTMLDocument
Dim post As Object, itemlist$, linklist As Variant, i As Long
Dim qualifiedLink$, nlink As Variant, postTime$, postTitle$
Dim times As Object
Set times = New Collection
With Http
.Open "GET", "https://stackoverflow.com/questions/tagged/web-scraping", False
.send
Html.body.innerHTML = .responseText
End With
Set post = Html.querySelectorAll(".summary .question-hyperlink")
Dim timesList As Object
Set timesList = Html.querySelectorAll(".user-action-time")
For i = 0 To post.Length - 1
postTime = timesList.item(i).innerText
times.Add postTime
qualifiedLink = baseUrl & Split(post(i).getAttribute("href"), "about:")(1)
itemlist = itemlist & IIf(itemlist = "", "", " ") & qualifiedLink
Next i
linklist = Split(itemlist, " ")
Dim accessor As Long
For Each nlink In linklist
accessor = accessor + 1
With Http
.Open "GET", nlink, False
.send
Html.body.innerHTML = .responseText
End With
postTitle = Html.querySelector("h1[itemprop='name'] a").innerText
' the following line prints postTime derived from earlier loop
Debug.Print times(accessor), postTitle
Next nlink
End Sub