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

VBA如何将雅虎财经爬取的含未知字符的异常日期字符串转为Date格式

雅虎财经爬取日期异常问题解决方案

方案1:识别并移除未知特殊字符

你可以先通过编码定位异常字符,再针对性替换:
首先运行如下代码输出字符串中每个字符的Unicode编码,定位异常字符:

Sub CheckCharCode(ByVal inputStr As String)
    Dim i As Long
    For i = 1 To Len(inputStr)
        Debug.Print "第" & i & "个字符:""" & Mid(inputStr, i, 1) & """,编码:" & AscW(Mid(inputStr, i, 1))
    Next
End Sub

运行后在立即窗口查看编码,常见的隐形字符编码包括160(非断空格)、8203(零宽空格)、8206/8207(方向控制符),确认编码后用如下代码替换即可:

' 示例:移除编码为8206的方向控制符和160的非断空格
DateString = Replace(DateString, ChrW(8206), "")
DateString = Replace(DateString, ChrW(160), "")
' 替换完成后即可正常用CDate转换
Worksheets("Stock_data").Range("A2").Value = CDate(DateString)

方案2:直接转换异常格式字符串为日期

推荐用正则表达式提取有效日期内容,完全跳过特殊字符处理:
可以直接用迟绑定调用正则,不需要提前引用库:

Function ExtractValidDate(ByVal inputStr As String) As Date
    Dim reg As Object
    Set reg = CreateObject("VBScript.RegExp")
    reg.Global = False
    ' 匹配 日+3位月份+4位年份的格式,忽略中间的特殊字符
    reg.Pattern = "(\d{1,2})[^A-Za-z]*([A-Za-z]{3})[^0-9]*(\d{4})"
    If reg.test(inputStr) Then
        Dim matches As Object
        Set matches = reg.Execute(inputStr)
        ' 拼接为标准日期字符串再转换
        ExtractValidDate = CDate(matches(0).SubMatches(0) & " " & matches(0).SubMatches(1) & " " & matches(0).SubMatches(2))
    End If
End Function

' 调用方法
Worksheets("Stock_data").Range("A2").Value = ExtractValidDate(DateString)

方案3:优化爬取逻辑从根源避免问题

你当前使用innerText获取内容,会携带渲染生成的隐形控制字符,有两种更可靠的爬取方式:

方式1:改用textContent获取纯文本

DOM元素的textContent属性只会返回节点的纯文本内容,不会携带渲染相关的隐形字符,修改爬取代码即可:

DateString = doc.getElementsByClassName("Py(10px) Ta(start) Pend(10px)")(j).textContent

方式2:直接抓取时间戳属性(最推荐)

雅虎财经历史价格表格的日期单元格自带Unix时间戳属性,不需要处理任何字符串即可直接转日期:

Dim dateEle As Object
Set dateEle = doc.getElementsByClassName("Py(10px) Ta(start) Pend(10px)")(j)
' 获取10位Unix时间戳
Dim timeStamp As Long
timeStamp = dateEle.getAttribute("data-date")
' 时间戳转北京时间(东八区)
Dim finalDate As Date
finalDate = DateAdd("s", timeStamp, "1970-01-01 08:00:00")
Worksheets("Stock_data").Range("A2").Value = finalDate

内容的提问来源于stack exchange,提问作者Jirka Čep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:45:02