Google Sheets中IMPORTXML XPath导入表格格式异常求助
解决Google Sheets导入NFL Defense表格的格式问题
我来帮你搞定这个数据导入的麻烦!你遇到的两个问题其实都有明确的解决办法,咱们一步步来:
为什么IMPORTHTML不好用?
页面里的Defense标签页是通过JavaScript切换显示的,IMPORTHTML只能抓取页面初始加载时默认显示的内容(也就是Offense页),所以不管你怎么指定,它都只会返回Offense页的表格——这也是你换用IMPORTXML的原因,方向是对的!
修复IMPORTXML的格式异常问题
你之前的公式把整个<tbody>节点作为一个整体抓取,导致所有单元格内容挤在一个格子里。我们需要调整XPath,精准定位到每个<td>元素,再把一维的结果重新组织成标准表格。
试试这个公式:
=ARRAYFORMULA( LET( data, IMPORTXML("http://nflsavant.com/game.php?team_code=SF&team_id=4500&stype=REG&year=2019&tab=defense", "//*[@id='tabDefense']/table[2]/tbody/tr/td"), col_count, 9, rows, ROUNDUP(COUNTA(data)/col_count), MAKEARRAY(rows, col_count, LAMBDA(r,c, INDEX(data, (r-1)*col_count + c))) ) )
公式说明:
- 精准抓取单元格:XPath
//*[@id='tabDefense']/table[2]/tbody/tr/td会定位到Defense标签页下第二个表格的所有单元格,返回一个一维数组。 - 重组表格:
col_count设置为9(对应你提供的示例内容里的9个数据项,你可以根据实际表格列数调整)rows计算需要多少行来容纳所有数据MAKEARRAY把一维数组转换成标准的行列结构,每个数据项对应单独的单元格
如果表格列数有变化,只需要修改col_count的值就可以了。
内容的提问来源于stack exchange,提问作者Perri Elizabeth
相关产品推荐
相关产品推荐

