SeleniumBasic+JavaScript+htmlfile获取表格内容

Sub 连接浏览器()
Dim Service As SeleniumBasic.ChromeDriverService
Dim Options As SeleniumBasic.ChromeOptions
Set WD = New SeleniumBasic.IWebDriver
Set Service = New SeleniumBasic.ChromeDriverService
With Service
.CreateDefaultService driverPath:=Replace(ThisWorkbook.FullName, “\Example\Selenium-VBA\SeleniumDemoforVBA.xlsm”, “”)
.HideCommandPromptWindow = True
End With
Set Options = New SeleniumBasic.ChromeOptions
With Options
.BinaryLocation = Replace(ThisWorkbook.FullName, “\Example\Selenium-VBA\SeleniumDemoforVBA.xlsm”, “”) & “\Chrome-bin\chrome.exe”
.DebuggerAddress = “127.0.0.1:9999”
End With
WD.New_ChromeDriver Service:=Service, Options:=Options
End Sub

Sub 获取有框架网页表格()
fra = WD.FindElementsByXPath(“//iframe”)'获网页内部所有框架数量
i=UBound(fra)

Set HTMLDoc = CreateObject(“htmlfile”)

js = “var iframe=document.getElementsByTagName(‘iframe’)[” & i & “];var innerDoc=iframe.contentDocument;var html=innerDoc.documentElement.outerHTML;return html;”
html_str= WD.ExecuteScript(js)'js获取源文
HTMLDoc.body.innerHTML = html_str’用htmlfile解析源文

Set bb = HTMLDoc.getElementsByTagName(“table”)'定位表格
If Not bb Is Nothing Then
If bb.Length > 0 Then
For k = 0 To bb.Length - 1
Set Table = HTMLDoc.getElementsByTagName(“table”)(k)
cc = Table.Rows(0).Cells.Length’获取表格列数
rr = Table.Rows.Length’获取表格行数
If rr > 1 And cc > 1 Then
Dim brr()
ReDim brr(1 To rr, 1 To cc)
For i = 0 To rr - 1
For j = 0 To cc - 1
brr(i + 1, j + 1) = Table.Rows(i).Cells(j).innerText’获取表格数据
Next j
Next i
Sheet3.[a60000].End(xlUp).Offset(1, 0).Resize(UBound(brr), UBound(brr, 2)) = brr
End If
Next k
End If
End If
Sheet3.Cells.WrapText = False
Sheet3.Cells.EntireColumn.AutoFit
End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值