我的网络抓取程序停止工作。所有者更改了html。
我认为需要更改的是Set allElements = doc.getElementsByClassname("el-col el-col-8")
行。
我正在尝试从包含“ 52周范围(未定义)”部分的网页中获取文字。我设法从之前和之后抓取文本,但没有找到我需要的部分。一个示例网页是https://www.gurufocus.com/stock/gliba/summary,在我进行一些修整后,我的代码应在单元格中填入“ 38.72-73.63”。
我需要这样做,这样我才能弄清楚它,并在将来需要时进行更改,因此请专注于更正我的固定代码行(假设这是问题!),而不是全新的代码。更复杂的方法,因为它将超越我。 (我的另一组代码行完成了我想要的工作。)
Sub get_title_header()
Dim wb As Object
Dim doc As Object
Dim incomeStmtURLs As Variant
Dim sURL As String
Dim lastrow As Long
Dim allRowOfData As Object
Dim i As Integer
Dim allElements As IHTMLElementCollection
Dim anElement As IHTMLElement
Dim aCell As HTMLTableCell
Application.DisplayAlerts = False
Call ToggleEvents(False)
incomeStmtURLs = Range("Sheet1!h1:h2").Value
For i = 1 To UBound(incomeStmtURLs)
Set wb = CreateObject("internetExplorer.Application")
sURL = incomeStmtURLs(i,1)
wb.navigate sURL
wb.Visible = False
While wb.Busy
Application.Wait Now + #12:00:01 AM#
DoEvents
Wend
Set doc = wb.document
On Error GoTo err_clear
Set allElements = doc.getElementsByClassname("el-col el-col-8")
While allElements.Length = 0
Application.Wait Now + #12:00:01 AM#
DoEvents
Wend
x = allElements(0).innerText
' Debug.Print x
Sheet6.Cells(i + 1,2).Value = Trim(Replace(Mid(x,InStr(1,x,"52-Week Range (undefined)") + 25,25),vbLf,""))
Set allElements = doc.getElementsByClassname("fs-x-large fc-primary fw-bolder")
x = allElements(0).innerText
Sheet6.Cells(i + 1,4).Value = Trim(Replace(Mid(x,"$") + 1,7),""))
err_clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
wb.Quit
Next i
Call ToggleEvents(True)
End Sub
Sub ToggleEvents(blnState As Boolean)
Application.DisplayAlerts = blnState
Application.EnableEvents = blnState
If blnState Then Application.CutCopyMode = False
If blnState Then Application.StatusBar = False
End Sub