vba - VBA 刮板
问题描述
我想在https://data.goaloong.net/1x2/上刮桌子
目前我正在使用此代码
Set http = New MSXML2.XMLHTTP
Set html = New HTMLDocument
url = "https://data.goaloong.net/1x2/"
http.Open "GET", url, False
http.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
http.send
While http.readyState <> 4
DoEvents
Wend
html.body.innerHTML = http.responseText
With Sheets("table")
Set HTMLAtab = html.getElementsByTagName("table")(0)
For Each HTMLArow In HTMLAtab.Rows
iRow = iRow + 1
iCol = 0
For Each HTMLAcel In HTMLArow.Cells
iCol = iCol + 1
Cells(iRow, iCol) = HTMLAcel.innerText
Next HTMLAcel
Next HTMLArow
End With
它没有做我需要的,我的目标是抓取 5 列的内容。
我试图调整代码:
.Cells(i, 1) = html.getElementsByClassName("black-down f-white")(0).innerText
.Cells(i, 2) = html.getElementsByClassName("en")(0).getAttribute("data-tf")
.Cells(i, 3) = html.getElementsByClassName("team")(0).innerText
.Cells(i, 4) = html.getElementsByClassName("td")(2).getElementsByTagName("a")(0).innerText
尝试了各种方法,但都失败了。
我能得到善意的支持吗?
解决方案
这是你想要的吗?
Sub TryThis()
Dim HTMLDoc As New HTMLDocument
Dim objTable As Object
Dim lRow As Long
Dim lngTable As Long
Dim lngRow As Long
Dim lngCol As Long
Dim ActRw As Long
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
Dim sht As Worksheet
Dim LastColumn As Long
objIE.Navigate "https://data.goaloong.net/1x2/"
Do Until objIE.ReadyState = 4 And Not objIE.Busy
DoEvents
Loop
Set sht = ThisWorkbook.Worksheets("Sheet1")
Application.Wait (Now + TimeValue("0:00:01"))
HTMLDoc.body.innerHTML = objIE.Document.body.innerHTML
With HTMLDoc.body
Set objTable = .getElementsByTagName("table")
For lngTable = 0 To objTable.Length - 1
For lngRow = 0 To objTable(lngTable).Rows.Length - 1
For lngCol = 0 To objTable(lngTable).Rows(lngRow).Cells.Length - 1
If lngCol = 0 Or lngCol = 1 Or lngCol = 2 Or lngCol = 3 Or lngCol = 11 Or lngCol = 12 Then
ThisWorkbook.Sheets("Sheet1").Cells(ActRw + lngRow + 1, lngCol + 1) = objTable(lngTable).Rows(lngRow).Cells(lngCol).innerText
End If
Next lngCol
Next lngRow
ActRw = ActRw + objTable(lngTable).Rows.Length + 1
Next lngTable
End With
objIE.Quit
End Sub
推荐阅读
- kubernetes - 在 K8s 上运行 Airflow 时出现 ErrImagePull
- powershell - 使用 ForEach 语句查询和设置多台主机的时区
- mongodb - 如何将 mongoshell 版本 4.4 降级到 3.6?
- search - 如何在二十一个 WordPress 主题的搜索结果中添加特色图片?
- android - 无法构建 wordpress(版本:alpha-290)
- sql - 如何将“IN”与字符串列表一起使用?
- node.js - Aws s3 图像图标
- vue.js - 为什么在firefox中使用类型为数字的v-text-field仍然可以在其中输入“abc”?
- reactjs - 在新选项卡上打开并保留用户 ID 时,套接字不显示已连接的用户
- javascript - When Call Angular function from JavaScript function but its showing undefined