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

VBA Selenium提取网页规格数据:实现键值对非合并格式输出

解决Grainger产品规格提取格式问题的VBA Selenium方案

原代码直接提取整个规格区域的文本,导致参数标签与对应值合并在一起。要实现「Spec1:Value1|Spec2:Value2|...」的格式,需要定位到每个规格项的标签和值元素分别抓取,以下是修改后的方案:

修改后的代码

Sub ExtractGraingerSpecs()
    Dim driver As New Selenium.ChromeDriver
    Dim specItems As Selenium.WebElements
    Dim specItem As Selenium.WebElement
    Dim specLabel As Selenium.WebElement
    Dim specValue As Selenium.WebElement
    Dim i As Long
    Dim lastRow As Long
    Dim specText As String
    
    ' 获取最后一行行号
    lastRow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
    
    ' 启动Chrome浏览器(只启动一次,提升效率)
    driver.Start
    
    For i = 2 To lastRow
        specText = "" ' 初始化规格文本
        
        ' 获取当前行的产品链接
        Dim myUrl As String
        myUrl = Sheet1.Cells(i, "A").Value
        
        ' 打开目标页面
        driver.Get myUrl
        driver.Wait 5000 ' 等待页面加载,可根据网络情况调整
        
        ' 定位所有规格项(根据页面实际结构,每个规格项是包含标签和值的容器)
        Set specItems = driver.FindElementsByCss(".P9I57X ._2x4xwN")
        
        ' 遍历每个规格项,提取标签和值
        For Each specItem In specItems
            On Error Resume Next ' 防止部分规格项结构异常导致报错
            Set specLabel = specItem.FindElementByCss("._3JxJ6E")
            Set specValue = specItem.FindElementByCss("._1l0el9")
            
            ' 拼接规格文本
            If Not specLabel Is Nothing And Not specValue Is Nothing Then
                If specText <> "" Then specText = specText & "|"
                specText = specText & specLabel.Text & ":" & specValue.Text
            End If
            On Error GoTo 0 ' 恢复错误处理
            
            Set specLabel = Nothing
            Set specValue = Nothing
        Next specItem
        
        ' 将结果写入B列
        Sheet1.Cells(i, "B").Value = specText
    Next i
    
    ' 关闭浏览器
    driver.Quit
End Sub

关键改动说明

  • 复用浏览器实例:将ChromeDriver的启动/关闭移到循环外,避免每次处理链接都重启浏览器,大幅提升效率
  • 精准定位元素:通过CSS选择器定位每个规格项的标签(._3JxJ6E)和值(._1l0el9)元素,确保标签与值一一对应
  • 错误处理:添加On Error Resume Next防止部分规格项结构异常导致代码中断
  • 格式拼接:遍历所有规格项,按「标签:值」的格式拼接,用|分隔不同规格

注意事项

  • 若Grainger页面结构更新,需检查并调整CSS选择器(可通过浏览器开发者工具查看元素的class属性)
  • 等待时间(driver.Wait)可根据网络速度调整,确保页面完全加载后再提取元素

内容的提问来源于stack exchange,提问作者jaga jagga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:35:42