使用Excel从网页获取数据时遭遇404错误求助
解决Excel「获取数据-自网页」访问特定网站返回404的问题
我之前碰到过好几个类似的案例——明明网页正常能打开,但用Excel自带的网页抓取工具就是返回404,这十有八九是网站的反数据采集策略识别出了Excel的请求特征,直接把它的请求给拦截了。下面给你几个实用的解决方案,覆盖无代码和轻量代码的场景:
伪装请求头(轻量调整Power Query)
虽然你一开始用的是无代码操作,但可以稍微进入Power Query编辑器做个小调整,模拟浏览器的请求:- 先照常通过「获取数据-自网页」添加目标URL,哪怕返回404也继续进入Power Query编辑器
- 找到界面上方的高级编辑器,修改
Web.Contents的参数,加上浏览器的User-Agent请求头,示例代码如下:Web.Contents("https://smarkets.com/listing/sport/football/premier-league-2017-2018", [Headers=[#"User-Agent"="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"]])
这样修改后,请求就会伪装成普通浏览器的访问,基本能绕过这类基础反爬。
本地保存网页后导入(纯无代码)
要是不想碰任何代码,最简单的办法就是先在浏览器里打开目标页面,按Ctrl+S把网页保存到本地(选「网页,仅HTML」格式),然后用Excel的「获取数据-自文件-自HTML」导入本地保存的文件。不过要注意,如果网页里的数据是动态加载的(比如滚动才加载内容),保存的HTML可能只包含页面初始的静态内容。验证URL有效性
虽然你说网页实际存在,但可以再检查一下:在浏览器里刷新页面后,重新复制当前的URL,再用Excel尝试导入。有些网站的URL会带临时会话参数,旧的URL可能会失效,但这个情况概率不高,不过可以快速排除一下。
另外要提醒的是,这类赛事交易类网站的反爬通常比较严格,即使这次绕过了404,后续可能还会遇到验证码或者IP限制的问题。如果是长期需要获取数据,可能得考虑更稳定的方案,但短期解决的话,上面的方法应该足够了。
内容的提问来源于stack exchange,提问作者John




