Option Explicit
Public URLarray() As Variant
Function ExecuteWebRequest(url As String) As String
Dim oXHTTP As Object
Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
oXHTTP.Open "GET", url, False
oXHTTP.send
ExecuteWebRequest = oXHTTP.responseText
Set oXHTTP = Nothing
End Function
Sub Extract_URLs()
Dim regex As Object, regexMatches As Object
Set regex = CreateObject("vbscript.regexp")
regex.MultiLine = True
regex.Global = True
Dim URLarray(), resultArray, htmlOutput, weekdayMatches, venueMatches, URLMatches As Variant
Dim trimmedvenueMatches As Variant
Dim raceURL As String, URLcount As Integer, URLresultcount As Integer
raceURL = "[URL unfurl="true"]http://www.xxxxxxxxxxxxxxxxxxxxxxxxx/"[/URL]
htmlOutput = ExecuteWebRequest(raceURL)
resultArray = Split(htmlOutput, "racecard_link" & Chr(34) & " href=" & Chr(34))
URLresultcount = UBound(resultArray, 1)
ReDim URLarray(1 To URLresultcount, 3)
For URLcount = 1 To UBound(resultArray)
'url in array(URLcount,0)
regex.Pattern = "[\s\S]+?.html" 'regex for the url"
Set URLMatches = regex.Execute(resultArray(URLcount))
URLarray(URLcount, 0) = Trim(URLMatches(0))
'weekday in array(URLcount,1)
regex.Pattern = "[\s\S]+?/" 'regex for the url"
Set weekdayMatches = regex.Execute(URLarray(URLcount, 0))
URLarray(URLcount, 1) = Trim(Replace(weekdayMatches(4), "/", vbNullString))
'venue in array(URLcount,2)
regex.Pattern = URLarray(URLcount, 1) & "/[\s\S]+?[0-9]" 'regex for the url"
Set venueMatches = regex.Execute(URLarray(URLcount, 0))
trimmedvenueMatches = Trim(Replace(venueMatches(0), URLarray(URLcount, 1) & "/", vbNullString))
URLarray(URLcount, 2) = Left(trimmedvenueMatches, InStrRev(trimmedvenueMatches, "_") - 1)
'time in array(URLcount,3)
URLarray(URLcount, 3) = Left(Right(URLarray(URLcount, 0), 9), 4)
Next URLcount
End Sub