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

Visual Basic网页爬取:正确提取Side字段目标值的技术问题

问题解决:提取网页中的Side目标值

我开发了一个网页爬取程序,将爬取结果展示在DataGridView中,但因提取逻辑存在问题,结果显示异常且无法在正确位置结束展示。当前使用的ExtractSide函数通过正则表达式提取网页源码中的Side字段,但无法正确提取出Both、None、Alliance或Horde这四个目标值。

原函数代码:

Private Function ExtractSide(sourceCode As String) As String
    Dim pattern As String = "Side: (.*?) [/li]"
    Dim match As Match = Regex.Match(sourceCode, pattern)

    If match.Success Then
        Return match.Groups(1).Value
    Else
        Return String.Empty
    End If
End Function

网页中Side字段的四种格式:

Side: Both[/li]
Side: None[/li]
Side: [span class=icon-alliance]Alliance[/span][/li]
Side: [span class=icon-horde]Horde[/span][/li]

修改后的提取函数

Private Function ExtractSide(sourceCode As String) As String
    ' 匹配两种格式:直接是Side: 目标值[/li],或Side: <span>目标值</span>[/li]
    Dim pattern As String = "Side: (?:\[span class=icon-(?:alliance|horde)\])?([A-Za-z]+)\[\/span\]?\[\/li\]"
    Dim match As Match = Regex.Match(sourceCode, pattern, RegexOptions.IgnoreCase)

    If match.Success Then
        Return match.Groups(1).Value
    Else
        Return String.Empty
    End If
End Function

关键修改说明

  1. 修正匹配格式:移除原正则中多余的空格,同时兼容带span标签和不带标签的两种格式
  2. 精准捕获目标值:用([A-Za-z]+)直接提取字母组成的目标值,避免捕获span标签内容
  3. 可选标签匹配:用?标记span标签部分为可选,同时限定仅匹配icon-alliance和icon-horde两种标签
  4. 忽略大小写:添加RegexOptions.IgnoreCase参数,避免因网页源码大小写不一致导致匹配失败

原代码失效原因

  • 原正则Side: (.*?) [/li]多了一个空格,与网页实际格式不匹配
  • 非贪婪匹配.*?会捕获到span标签的冗余内容,无法直接提取目标值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:33:22