吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 457|回复: 6
收起左侧

[其他求助] excel VBA使用XML获取网页内容故障

[复制链接]
loa123 发表于 2024-7-5 21:41
25吾爱币
本帖最后由 loa123 于 2024-7-5 22:18 编辑

[Visual Basic] 纯文本查看 复制代码
' 创建XMLHTTP对象
Dim xml As Object
Set xml = CreateObject("MSXML2.XMLHTTP")

' 构造URL
Dim playID As String
playID = 192985
Dim url As String
url = "https://sofifa.com/player/" & playID & "/240045/"

' 设置请求头
xml.Open "GET", url, False
xml.setRequestHeader "User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"

' 发送请求
xml.send
Dim responseText As String
responseText = xml.responseText ' 捕获完整的响应文本' 检查HTTP请求是否成功
If xml.Status <> 200 Then
    MsgBox "请求失败,状态码:" & xml.Status & ". 响应文本:" & vbCrLf & responseText & ". 请检查playID: " & playID
    ' 清理资源
    Set xml = Nothing
    Exit Sub
End If


使用浏览器访问https://sofifa.com/player/192985/240045/没问题,但是使用VBA就会403访问错误。。。有什么办法解决??

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

十万菠萝拍黄瓜 发表于 2024-7-6 18:59
    Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
    WinHttpReq.Open "GET", "https://sofifa.com/player/192985/240045/", False
    WinHttpReq.setRequestHeader "user-agent", "Mozilla/5.0"
    WinHttpReq.Send
    MsgBox WinHttpReq.Status
    MsgBox WinHttpReq.ResponseText
freelive 发表于 2024-7-7 19:19
 楼主| loa123 发表于 2024-7-7 21:31
十万菠萝拍黄瓜 发表于 2024-7-6 18:59
Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
    W ...

不行。。还是403错误
52kun 发表于 2024-7-9 08:48
从返回的HTML内容来看,网站sofifa.com正在使用Cloudflare的挑战平台来防止自动化访问。当你尝试通过VBA脚本访问该网站时,它会返回一个带有JavaScript和Cookies启用提示的页面,这是因为Cloudflare的系统检测到你的请求没有来自一个正常的浏览器环境。

为了绕过这个限制,你需要模拟一个完整的浏览器环境,这超出了VBA的能力范围。VBA本身并不支持JavaScript的执行,也不容易处理复杂的Cookies和会话管理。此外,Cloudflare的挑战可能包括人机验证,如滑块验证,这是VBA无法完成的。

解决这个问题的一些方法包括:

使用Web Scraping工具: 使用如Selenium这样的工具,它可以启动一个真实的浏览器实例并控制它,从而能够通过Cloudflare的挑战。

API访问: 如果sofifa.com提供了API,你可以直接调用API而不是试图抓取网页内容。

第三方服务: 有些服务提供通过真实浏览器访问网站的能力,例如使用Headless Chrome或Firefox通过Selenium Grid或类似服务。

遵守网站政策: 最好先检查网站的robots.txt文件和使用条款,确保你的数据抓取行为是被允许的。如果网站不允许自动化抓取,你应该尊重这一点。

如果你仍然希望使用VBA进行数据抓取,你可能需要寻找那些不使用Cloudflare或有更宽松访问策略的网站。对于sofifa.com,由于其使用了Cloudflare的保护,使用VBA直接抓取网页内容可能不是一个可行的解决方案。
 楼主| loa123 发表于 2024-7-9 13:24
52kun 发表于 2024-7-9 08:48
从返回的HTML内容来看,网站sofifa.com正在使用Cloudflare的挑战平台来防止自动化访问。当你尝试通过VBA脚 ...

用WPS的JSA可以么?
52kun 发表于 2024-7-9 15:10
loa123 发表于 2024-7-9 13:24
用WPS的JSA可以么?

应该也不行,最好用Selenium之类的可以模拟浏览器的方法
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 15:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表