You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VBA+Selenium提取指定网页内容遇阻,请求技术帮助

问题:从WebSRO页面提取Correios物流信息的VBA实现问题

目标提取信息

  • 状态:Objeto recebido pelos Correios do Brasil
  • 日期:Data: 17/03/2023 às 07:57
  • 地点:Local: CURITIBA / PR

尝试过的代码及问题

无效代码尝试

Cells(linha, 12).value = navegadorChrome.FindElementsByClass("container")(1).FindElementsByCss("row")(4).Text
    
Cells(linha, 13).value = navegadorChrome.FindElementsByClass("container")(1).FindElementsByclassName("bold eventoLocal")(1).Text

接近目标但存在局限的代码

仅能获取<span>标签内的文本,无法提取标签之后的目标内容:

Cells(linha, 13).value = navegadorChrome.FindElementsByClass("container")(1).FindElementByXPath("/html/body/div[1]/div[4]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/span[1]/").Text

解决方案

方法1:XPath直接定位span后的文本节点

利用XPath的following-sibling::text()语法,直接获取span标签之后的文本内容:

' 提取状态
Cells(linha, 12).Value = navegadorChrome.FindElementByXPath("/html/body/div[1]/div[4]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/span[1]/following-sibling::text()[1]").Text

' 提取日期
Cells(linha, 13).Value = navegadorChrome.FindElementByXPath("/html/body/div[1]/div[4]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[2]").Text

' 提取地点
Cells(linha, 14).Value = navegadorChrome.FindElementByXPath("/html/body/div[1]/div[4]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[3]").Text

方法2:获取父节点文本后拆分

如果绝对XPath稳定性差,可以先获取整个<td>的文本内容,再按分隔符拆分出目标信息:

Dim statusTdText As String
statusTdText = navegadorChrome.FindElementByXPath("/html/body/div[1]/div[4]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]").Text

' 拆分出状态内容(假设span文本为"Status:")
Cells(linha, 12).Value = Trim(Split(statusTdText, ":")(1))

优化方案:使用相对定位提高稳定性

避免依赖绝对XPath,改用CSS选择器或相对定位定位物流表格,代码更健壮:

' 定位物流事件表格
Dim eventoTable As Object
Set eventoTable = navegadorChrome.FindElementByCss("table.tabelaEventos")

' 获取第一行的所有td元素
Dim tdElements As Object
Set tdElements = eventoTable.FindElementsByTagName("td")

' 提取状态(拆分第一个td的文本)
Cells(linha, 12).Value = Trim(Split(tdElements(0).Text, ":")(1))
' 提取日期
Cells(linha, 13).Value = tdElements(1).Text
' 提取地点
Cells(linha, 14).Value = tdElements(2).Text

内容的提问来源于stack exchange,提问作者Fernando Barreto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:38:20