Vba web scrape“;a href"。点击

Vba web scrape“;a href"。点击,vba,excel,href,Vba,Excel,Href,thx 请参见我认为anchor不适合我,或者我没有完成:( 结果必须是 等 我的完整代码 ' Add reference to Microsoft Internet Controls (SHDocVw) ' Add reference to Microsoft HTML Object Library Dim anchors As IHTMLElementCollection Dim anchor As HTMLAnchorElement Set anchors = htmlDoc.getEl

thx


请参见

我认为anchor不适合我,或者我没有完成:(

结果必须是 等

我的完整代码

' Add reference to Microsoft Internet Controls (SHDocVw)
' Add reference to Microsoft HTML Object Library

Dim anchors As IHTMLElementCollection
Dim anchor As HTMLAnchorElement
Set anchors = htmlDoc.getElementsByTagName("a")

For Each anchor In anchors
    ' anchor.Click ... this probably won't work

    ' I gues something like this is what you want (untested code)
    ie.navigate anchor.href, 1 ' BrowserNavConstants.navOpenInNewTab
Next anchor
Sub basketballreference()
Dim objIE作为InternetExplorer
作为对象的字母表
作为对象的可播放表格
作为整数的Dim r
作为整数的Dim c
将字母变暗作为字符串
将我的字符串变暗为字符串
将MyLetter变暗为字符串
Set objIE=新的InternetExplorer
objIE.navigate“http://www.basketball-reference.com/players/"
objIE.Visible=True
Do While objIE.Busy=True或objIE.readyState 4:DoEvents:Loop
对于objIE.document.getElementsByClassName(“字母内联”)中的每个元素字母表
MyString=Replace(elealphabet.textContent,“X”,“”)
'关闭所有打开的ie浏览器
Dim objWMI作为对象,objProcess作为对象,objProcess作为对象
设置objWMI=GetObject(“winmgmts://.”)
设置objprocess=objWMI.ExecQuery(_
“从Win32_进程中选择*,其中名称='iexplore.exe'”
作为整数的Dim j
j=objprocess.Count
对于objProcess中的每个objProcess
如果j>1,则Shell“taskkill/f/PID”和CStr(objProcess.ProcessID),vbHide
j=j-1
下一个
设置objprocess=Nothing
设置objWMI=Nothing
设置对象=无
对于i=2到Len(MyString)
MyLetter=LCase(Mid(MyString,i,1))
Set objIE=新的InternetExplorer
objIE.navigate“http://www.basketball-reference.com/players/“&MyLetter&”/”
objIE.Visible=True
应用程序。立即等待+时间值(“00:00:02”)
objIE.Busy或objIE.readyState readyState_COMPLETE:DoEvents:Wend时
对于objIE.document.getElementById(“玩家”).getElementsByTagName(“a”)中的每个eleplayertable
“必须转到玩家页面
下一个
接下来我
下一个
端接头
两年后回答:)

如果你仍然有问题,试试这个

Sub basketballreference()

Dim objIE As InternetExplorer
Dim elealphabet As Object
Dim eleplayertable As Object

Dim r As Integer
Dim c As Integer
Dim letter As String
Dim MyString As String
Dim MyLetter As String

Set objIE = New InternetExplorer
objIE.navigate "http://www.basketball-reference.com/players/"
objIE.Visible = True

Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

For Each elealphabet In objIE.document.getElementsByClassName("alphabet inline")

MyString = Replace(elealphabet.textContent, "X", "")

'Close all opened ie browser
Dim objWMI As Object, objProcess As Object, objProcesses As Object
Set objWMI = GetObject("winmgmts://.")
Set objProcesses = objWMI.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
Dim j As Integer
j = objProcesses.Count
For Each objProcess In objProcesses
If j > 1 Then Shell "taskkill /f /PID " & CStr(objProcess.ProcessID), vbHide

j = j - 1
Next
Set objProcesses = Nothing
Set objWMI = Nothing
Set objIE = Nothing

For i = 2 To Len(MyString)
MyLetter = LCase(Mid(MyString, i, 1))

Set objIE = New InternetExplorer
objIE.navigate "http://www.basketball-reference.com/players/" & MyLetter & "/"
objIE.Visible = True
Application.Wait Now + TimeValue("00:00:02")
While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE: DoEvents: Wend

For Each eleplayertable In objIE.document.getElementById("players").getElementsByTagName("a")
'must go to players page

Next
Next i
Next
End Sub
希望这有帮助

致意


Sameur

完整的代码是什么?有哪些问题?请阅读上的帮助主题
' Add reference to Microsoft Internet Controls (SHDocVw)
' Add reference to Microsoft HTML Object Library

Dim anchors As IHTMLElementCollection
Dim anchor As HTMLAnchorElement
Set anchors = htmlDoc.getElementsByTagName("a")

For Each anchor In anchors
    ' anchor.Click ... this probably won't work

    ' I gues something like this is what you want (untested code)
    ie.navigate anchor.href, 1 ' BrowserNavConstants.navOpenInNewTab
Next anchor
Sub basketballreference()

Dim objIE As InternetExplorer
Dim elealphabet As Object
Dim eleplayertable As Object

Dim r As Integer
Dim c As Integer
Dim letter As String
Dim MyString As String
Dim MyLetter As String

Set objIE = New InternetExplorer
objIE.navigate "http://www.basketball-reference.com/players/"
objIE.Visible = True

Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

For Each elealphabet In objIE.document.getElementsByClassName("alphabet inline")

MyString = Replace(elealphabet.textContent, "X", "")

'Close all opened ie browser
Dim objWMI As Object, objProcess As Object, objProcesses As Object
Set objWMI = GetObject("winmgmts://.")
Set objProcesses = objWMI.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
Dim j As Integer
j = objProcesses.Count
For Each objProcess In objProcesses
If j > 1 Then Shell "taskkill /f /PID " & CStr(objProcess.ProcessID), vbHide

j = j - 1
Next
Set objProcesses = Nothing
Set objWMI = Nothing
Set objIE = Nothing

For i = 2 To Len(MyString)
MyLetter = LCase(Mid(MyString, i, 1))

Set objIE = New InternetExplorer
objIE.navigate "http://www.basketball-reference.com/players/" & MyLetter & "/"
objIE.Visible = True
Application.Wait Now + TimeValue("00:00:02")
While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE: DoEvents: Wend

For Each eleplayertable In objIE.document.getElementById("players").getElementsByTagName("a")
'must go to players page

Next
Next i
Next
End Sub
Set elemCollection = IE.document.getElementsByTagName("a")(2)
'Debug.Print elemCollection.Length
'Debug.Print elemCollection.body.innerHTML


For Each tagx In tags
      If tagx.href = "your href" Then
    tagx.Click

End If
Next