Google Sheets中IMPORTHTML函数失效及改用IMPORTXML获取数据的问题
Google Sheets中IMPORTHTML函数失效及改用IMPORTXML获取数据的问题
你好呀!遇到用了一年的IMPORTHTML突然报“Could not fetch”的情况确实挺头疼的,我来帮你拆解下可能的原因,再给你提供用IMPORTXML替代的解决方案~
一、为什么IMPORTHTML会突然失效?
常见的原因主要有这几个:
- 网站结构变更:目标网站可能调整了页面的HTML结构,你之前指定的
Table索引(也就是公式里的1)对应的表格可能已经不是原来的数据表了,或者表格本身的层级、类名发生了变化 - 反爬机制限制:很多数据网站会新增反爬虫策略,Google Sheets的请求可能被识别为非人工访问,从而被拦截
- 临时服务异常:Google Sheets的服务或者目标网站的服务器临时出问题,但这种情况一般过段时间会自动恢复,你说突然失效大概率是前两种情况
二、用IMPORTXML获取相同数据的方案
我针对你需要的列(球员名、球队、位置、GP、TOI、CF、CA、CF%、xGF、FF%),整理了对应的IMPORTXML+QUERY公式,你可以直接试试:
=QUERY(IMPORTXML("https://www.naturalstattrick.com/playerteams.php?fromseason=20212022&thruseason=20232024&stype=2&sit=5v5&score=all&stdoi=std&rate=y&team=ALL&pos=S&loc=B&toi=0&gpfilt=none&fd=&td=&tgp=410&lines=single&draftteam=ALL", "//table[@class='sortable stats']/tbody/tr/td[position()=2 or position()=3 or position()=4 or position()=5 or position()=6 or position()=7 or position()=8 or position()=9 or position()=14 or position()=33]"), "SELECT Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col10,Col9")
公式说明:
- IMPORTXML部分:用XPath精准筛选出你需要的列,
position()对应原表格的列序号,这里直接指定了2、3、4、5、6、7、8、9、14、33这几列 - QUERY部分:因为XPath提取的列顺序是
2,3,4,5,6,7,8,9,14,33,而你需要的顺序是2,3,4,5,6,7,8,9,33,14,所以用SELECT调整了最后两列的位置
三、如果IMPORTXML也失效了怎么办?
如果之后这个XPath也不好用了,你可以自己用浏览器的开发者工具(按F12)重新定位:
- 打开目标页面,右键点击数据表格的任意一行,选择“检查”
- 在Elements面板里找到表格的标签(一般是
<table>),看它的类名或者ID,更新XPath里的定位条件 - 找到每一列对应的
<td>标签,确认它们的位置序号,调整position()里的数值
备注:内容来源于stack exchange,提问作者David R
相关产品推荐
相关产品推荐

