首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌工作表ImportXML失败

谷歌工作表ImportXML失败
EN

Stack Overflow用户
提问于 2020-07-13 20:03:10
回答 1查看 135关注 0票数 0

这个可以用:

代码语言:javascript
复制
=importxml("https://discgolfmetrix.com/?u=scorecard&ID=900113&view=result", "//table[@class='data data-hover']/tr/td[2]")

这个失败了:

代码语言:javascript
复制
=importxml("https://discgolfmetrix.com/?u=scorecard&ID=1172639&view=result", "//table[@class='data data-hover']/tr/td[2]")

如果它是另一种方式,我可以理解它,因为第一个有两个tbody标签。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 23:38:03

GoogleSheets以自己的方式解析页面(父>>子结构与浏览器中的不完全相同)。在XPath中使用//tr来避免解析错误:

代码语言:javascript
复制
=IMPORTXML("https://discgolfmetrix.com/?u=scorecard&ID=1172639&view=result","//table[@class='data data-hover']//tr/td[2]")

或者使用IMPORTHMTLQUERY

代码语言:javascript
复制
=QUERY(IMPORTHTML("https://discgolfmetrix.com/?u=scorecard&ID=1172639&view=result","table",1),"select Col2 OFFSET 1")

输出:

EDIT:更多细节:

对于第一个链接,解析后的HTML结构如下:

代码语言:javascript
复制
<table>
    <tr>    
        <td></td>
        <td>your_data</td>
        ...
    </tr>
    <tr>    
        <td></td>
        <td>your_data</td>
        ...
    </tr>
    ...
</table>

你的XPath就能工作了。

对于第二个链接,前面有一个包含tr元素的tbody元素。它的结构是:

代码语言:javascript
复制
<table>
    <tbody>     
        <tr>    
            <td></td>
            <td>your_data</td>
            ...
        </tr>
        <tr>    
            <td></td>
            <td>your_data</td>
            ...
        </tr>
        ...
    </tbody>
</table>

你的XPath就失败了。这就是为什么必须在表达式中使用//或声明tbody元素的原因:

代码语言:javascript
复制
=IMPORTXML("https://discgolfmetrix.com/?u=scorecard&ID=1172639&view=result","//table[@class='data data-hover']/tbody/tr/td[2]")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62875444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档