Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 循环代码行并更改getElementsByClassName的整数_Html_Vba_Loops_Getelementsbyclassname_Classname - Fatal编程技术网

Html 循环代码行并更改getElementsByClassName的整数

Html 循环代码行并更改getElementsByClassName的整数,html,vba,loops,getelementsbyclassname,classname,Html,Vba,Loops,Getelementsbyclassname,Classname,以前发布在MrExcel论坛上 我最初的代码是 Set DogRows1 = HTMLDoc.getElementsByClassName("rpb-greyhound rpb-greyhound-1 hover-opacity" 它适用于整数1。但是,我需要增加1,并更改为2,3,4,5和6的其他网页,如下所示 Set DogRows1 = HTMLDoc.getElementsByClassName("rpb-greyhound rpb-greyhound-

以前发布在MrExcel论坛上

我最初的代码是

Set DogRows1 = HTMLDoc.getElementsByClassName("rpb-greyhound rpb-greyhound-1 hover-opacity"
它适用于整数1。但是,我需要增加1,并更改为2,3,4,5和6的其他网页,如下所示

Set DogRows1 = HTMLDoc.getElementsByClassName("rpb-greyhound rpb-greyhound-6 hover-opacity"
我尝试声明一些变量并添加一个For Next循环,但是它不会循环通过。我做错了什么?我把下一个循环放错地方了吗

Dim StartRaceNumber As Integer
Dim LastRaceNumber As Integer

XMLReq.Open "GET", DogPageURL, False
XMLReq.send

If XMLReq.Status <> 200 Then
    MsgBox "Problem" & vbNewLine & XMLReq.Status & " - " & XMLReq.statusText
    Exit Sub
End If

HTMLDoc.body.innerhtml = XMLReq.responseText
Set XMLReq = Nothing

LastRaceNumber = 6

For StartRaceNumber = 1 To LastRaceNumber
    Set DogRows1 = HTMLDoc.getElementsByClassName("rpb-greyhound rpb-greyhound-" & StartRaceNumber & " hover-opacity")
    For Each DogRow1 In DogRows1
        Set DogNameLink1 = DogRow1.getElementsByTagName("a")(0)
        NextHref = DogRow1.getAttribute("href")
        NextURL = DogURL & Mid(NextHref, InStr(NextHref, ":") + 28)
        Debug.Print DogRow1.innerText, NextURL
    Next DogRow1
Next StartRaceNumber
Dim StartRaceNumber作为整数
将LastRaceNumber设置为整数
XMLReq.Open“GET”,DogPageURL,False
XMLReq.send
如果XMLReq.Status为200,则
MsgBox“问题”&vbNewLine&XMLReq.Status&“-”&XMLReq.statusText
出口接头
如果结束
HTMLDoc.body.innerhtml=XMLReq.responseText
设置XMLReq=Nothing
LastRaceNumber=6
对于StartRaceNumber=1到LastRaceNumber
Set DogRows1=HTMLDoc.getElementsByClassName(“rpb灰狗rpb灰狗-”&StartRaceNumber&“悬停不透明度”)
对于DogRow1中的每个DogRow1
Set DogNameLink1=DogRow1.getElementsByTagName(“a”)(0)
NextHref=DogRow1.getAttribute(“href”)
NextURL=DogURL&Mid(NextHref,仪表(NextHref,“:”)+28)
Debug.Print DogRow1.innerText,nextur
下一条狗1
下一个StartRaceNumber
确定SIM卡

报废顺序如下:

获取灰狗卡

获取灰狗URL狗信息

获取灰狗表单详细信息,这是灰狗1的一个示例

然后循环到下一场比赛并重复

正如我所说,从代码中,我只能为每一场比赛获取灰狗1的详细信息。如果你能帮我的话,我也需要其他的狗

这些是我的模块,希望它们已正确导入>

Option Explicit
Const DogURL作为字符串=”https://www.timeform.com/greyhound-racing/racecards" 子列表dograce()

Dim XMLReq作为新的MSXML2.XMLHTTP60
将HTMLDoc设置为新的MSHTML.HTMLDocument
将TFRaceList设置为MSHTML.IHTMLElement
将TFRaces设置为MSHTML.IHTMLElementCollection
Dim TFRace作为MSHTML.IHTMLElement
Dim NextHref作为字符串
作为字符串的Dim NextURL
XMLReq.Open“GET”,DogURL,False
XMLReq.send
如果XMLReq.Status为200,则
MsgBox“问题”&vbNewLine&XMLReq.Status&“-”&XMLReq.statusText
出口接头
如果结束
HTMLDoc.body.innerhtml=XMLReq.responseText
设置XMLReq=Nothing
设置TFRaces=HTMLDoc.getElementsByClassName(“wfr race bg浅灰色悬停不透明度”)
对于TFRaces中的每个TFRace
NextHref=TFRace.getAttribute(“href”)
NextURL=DogURL&Mid(NextHref,仪表(NextHref,“:”)+28)
ListDogsOnPage TFRace.innerText,下一页
下一场比赛
端接头 子列表DogsonPage(DogName为字符串,DogPageURL为字符串)

Dim XMLReq作为新的MSXML2.XMLHTTP60
将HTMLDoc设置为新的MSHTML.HTMLDocument
Dim DogRow1作为MSHTML.IHTMLElement
将DogRows1变暗为MSHTML.IHTMLElementCollection
Dim DogNameLink1作为MSHTML.IHTMLElement
Dim NextHref作为字符串
作为字符串的Dim NextURL
Dim StartRaceNumber作为整数
将LastRaceNumber设置为整数
XMLReq.Open“GET”,DogPageURL,False
XMLReq.send
如果XMLReq.Status为200,则
MsgBox“问题”&vbNewLine&XMLReq.Status&“-”&XMLReq.statusText
出口接头
如果结束
HTMLDoc.body.innerhtml=XMLReq.responseText
设置XMLReq=Nothing
LastRaceNumber=6
对于StartRaceNumber=1到LastRaceNumber
Set DogRows1=HTMLDoc.getElementsByClassName(“rpb灰狗rpb灰狗-”&StartRaceNumber&“悬停不透明度”
对于DogRow1中的每个DogRow1
Set DogNameLink1=DogRow1.getElementsByTagName(“a”)(0)
NextHref=DogRow1.getAttribute(“href”)
NextURL=DogURL&Mid(NextHref,仪表(NextHref,“:”)+28)
Debug.Print DogRow1.innerText,nextur
下一条狗1
下一个StartRaceNumber

End Sub

我可以确认一下吗,这只是我需要的每只灰狗的每场比赛页面上的URL,所以我可以从灰狗的表格中删除

例如:

诺丁汉11.06

#1巴利博格加里

#2萨拉克雷斯布鲁瑟

#3跟着我走

#4荣誉武士

#5 NidderdalFlurry

#6动感旋律

我已经开发了一个强大的查询功能,可以从url页面中获取表单数据。我正在努力为每一个种族获取6倍灰狗表单url的完整列表(如上所述)


如果有意义的话?

你能分享这个网站的url吗?
Dim XMLReq As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument

Dim TFRaceList As MSHTML.IHTMLElement
Dim TFRaces As MSHTML.IHTMLElementCollection
Dim TFRace As MSHTML.IHTMLElement

Dim NextHref As String
Dim NextURL As String

XMLReq.Open "GET", DogURL, False
XMLReq.send

If XMLReq.Status <> 200 Then
    MsgBox "Problem" & vbNewLine & XMLReq.Status & " - " & XMLReq.statusText
    Exit Sub
End If

HTMLDoc.body.innerhtml = XMLReq.responseText
Set XMLReq = Nothing

Set TFRaces = HTMLDoc.getElementsByClassName("wfr-race bg-light-gray hover-opacity")

For Each TFRace In TFRaces

    NextHref = TFRace.getAttribute("href")
    NextURL = DogURL & Mid(NextHref, InStr(NextHref, ":") + 28)    
    ListDogsOnPage TFRace.innerText, NextURL
Next TFRace
Dim XMLReq As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument

Dim DogRow1 As MSHTML.IHTMLElement
Dim DogRows1 As MSHTML.IHTMLElementCollection

Dim DogNameLink1 As MSHTML.IHTMLElement

Dim NextHref As String
Dim NextURL As String

Dim StartRaceNumber As Integer
Dim LastRaceNumber As Integer

XMLReq.Open "GET", DogPageURL, False
XMLReq.send

If XMLReq.Status <> 200 Then
    MsgBox "Problem" & vbNewLine & XMLReq.Status & " - " & XMLReq.statusText
    Exit Sub
End If

HTMLDoc.body.innerhtml = XMLReq.responseText
Set XMLReq = Nothing

LastRaceNumber = 6

For StartRaceNumber = 1 To LastRaceNumber
    Set DogRows1 = HTMLDoc.getElementsByClassName("rpb-greyhound rpb-greyhound-" & StartRaceNumber & " hover-opacity"
For Each DogRow1 In DogRows1
        Set DogNameLink1 = DogRow1.getElementsByTagName("a")(0)
        NextHref = DogRow1.getAttribute("href")
        NextURL = DogURL & Mid(NextHref, InStr(NextHref, ":") + 28)
        Debug.Print DogRow1.innerText, NextURL
    Next DogRow1
Next StartRaceNumber