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

如何用HtmlAgilityPack判断Div内结构 适配VB.NET价格解析逻辑

解决VB.NET桌面应用中动态判断价格结构并解析的方案

我之前也碰到过类似的页面结构变动问题,给你分享个我在VB.NET里用的落地思路,应该能完美匹配你的需求:

核心逻辑

先定位到存放价格的主Div,再检查它内部的嵌套结构——如果包含Table就走Table解析逻辑,否则走普通Div解析逻辑,按需调用对应代码即可。下面是具体实现步骤:

1. 先获取主Div元素

假设你用的是HtmlAgilityPack(VB.NET爬虫最常用的HTML解析库,没装的话直接NuGet搜一下就能装),先定位到价格所在的主容器:

' 替换成你实际的主Div标识,比如class或id
Dim doc As New HtmlDocument()
doc.LoadHtml(爬取到的网页HTML内容)
Dim mainPriceDiv As HtmlNode = doc.DocumentNode.SelectSingleNode("//div[@class='price-main-container']")

If mainPriceDiv Is Nothing Then
    ' 处理主Div不存在的异常情况,比如打日志或提示用户
    Return Nothing
End If

2. 判断嵌套结构类型

接下来检查主Div内部是否包含Table元素,以此区分两种结构:

' 检查主Div下是否有嵌套的Table
Dim priceTable As HtmlNode = mainPriceDiv.SelectSingleNode(".//table")

If priceTable IsNot Nothing Then
    ' 调用Table结构的价格解析方法
    Dim realPrice As String = ParsePriceFromTable(priceTable)
    Return realPrice
Else
    ' 调用普通Div结构的价格解析方法
    Dim realPrice As String = ParsePriceFromDiv(mainPriceDiv)
    Return realPrice
End If

3. 实现两种解析方法

Table结构解析示例

假设价格存放在Table的某个指定td里,比如带price-value类的节点:

Private Function ParsePriceFromTable(tableNode As HtmlNode) As String
    ' 根据实际网页结构调整XPath或选择器
    Dim priceNode As HtmlNode = tableNode.SelectSingleNode(".//td[@class='price-value']")
    If priceNode IsNot Nothing Then
        ' 清理文本,去掉多余空格、货币符号等
        Return priceNode.InnerText.Trim().Replace("¥", "")
    End If
    Return Nothing
End Function

普通Div结构解析示例

假设价格直接在主Div的子Div节点中,比如带price-text类的节点:

Private Function ParsePriceFromDiv(divNode As HtmlNode) As String
    ' 根据实际网页结构调整XPath或选择器
    Dim priceNode As HtmlNode = divNode.SelectSingleNode(".//div[@class='price-text']")
    If priceNode IsNot Nothing Then
        Return priceNode.InnerText.Trim().Replace("¥", "")
    End If
    Return Nothing
End Function

额外小提示

  • 不确定元素路径的话,直接用浏览器F12开发者工具定位元素,复制对应的XPath或选择器就行,省得自己写出错。
  • 如果网页是动态加载的(比如价格是JS渲染的),直接爬HTML可能拿不到内容,这时候可以用WebBrowser控件或者Selenium模拟浏览器渲染后再获取页面源码。
  • 记得给解析逻辑加异常处理,比如节点为空的情况,避免因为网页小改动导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:51:02