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

VBA调用IE爬取soccer24数据时中途断连问题求助

嘿,我之前也碰到过IE自动化这类糟心的连接限制问题,结合你的场景,给你几个实用的解决方案:

问题根源分析

大概率是这两个原因:一是IE本身的资源泄漏问题,连续几十次请求后内存或连接池耗尽;二是目标网站的反爬机制识别到了高频自动化请求,直接切断了连接。

具体解决方案

1. 每次迭代彻底销毁IE实例,避免资源堆积

别一直复用同一个IE对象!每次爬完一个页面就彻底关掉它,释放系统资源,这能解决大部分IE崩溃/断连的问题。

修改你的循环代码示例:

Dim IE As Object
Dim i As Integer
Dim waitTime As Integer

For i = 1 To 150
    ' 每次循环创建全新的IE实例
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True ' 调试时设为True,稳定后可改成False后台运行
    
    ' 模拟人类随机延迟(2-5秒),规避反爬
    waitTime = Int((5 - 2 + 1) * Rnd + 2)
    Application.Wait Now + TimeValue("00:00:" & waitTime)
    
    ' 导航到目标赛事页面
    IE.Navigate "https://www.soccer24.com/match/" & Range("A" & i).Value & "/#odds-comparison;1x2-odds;1st-half"
    
    ' 等待页面完全加载(一定要加,避免提前提取空数据)
    Do While IE.Busy Or IE.ReadyState <> 4
        DoEvents
    Loop
    
    ' -------------------
    ' 这里写你的数据提取逻辑
    ' -------------------
    
    ' 处理完后彻底销毁IE实例
    IE.Quit
    Set IE = Nothing
Next i

2. 添加随机延迟+请求间隔优化

网站的反爬系统很容易识别到“固定间隔的高频请求”,所以一定要加随机等待时间。如果还是被限制,可以把延迟拉长到5-10秒,或者在每10次请求后额外加一段更长的休息时间(比如10秒)。

3. 清理IE缓存与临时文件

连续爬取会产生大量缓存,可能导致IE加载异常。你可以在循环开头或每N次迭代后添加缓存清理:

' 清理IE临时文件(需要管理员权限,或者手动调整IE设置)
Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8", vbHide

4. 换掉IE,改用现代浏览器自动化

IE早就被微软弃用了,稳定性和兼容性都拉胯。推荐转用Selenium VBA绑定Chrome/Edge,现代浏览器的自动化机制更成熟,反爬应对也更灵活:

  • 先安装Selenium VBA插件,下载对应浏览器的驱动(ChromeDriver/EdgeDriver)
  • 用新的代码逻辑替代IE自动化,比如:
Dim driver As New ChromeDriver
driver.Start "Chrome"

For i = 1 To 150
    driver.Get "https://www.soccer24.com/match/" & Range("A" & i).Value & "/#odds-comparison;1x2-odds;1st-half"
    driver.Wait 2000 ' 等待2秒
    ' 数据提取逻辑...
Next i

driver.Quit
额外注意事项
  • 先检查目标网站的robots.txt,确保你的爬取行为符合网站规则,避免触发更严格的封禁
  • 如果频繁断连,可能是IP被网站限制了,可以考虑用代理IP池(注意合法合规)

内容的提问来源于stack exchange,提问作者Luis D Herrera Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:21:03