【问题标题】:ImportXML Google Spreadsheet Alexa Ranking CheckerImportXML Google 电子表格 Alexa 排名检查器
【发布时间】:2014-01-23 22:08:17
【问题描述】:

尝试使用 =ImportXML 解析 Google Doc 中的 Alexa 排名。以下有效并显示全球排名:

=value(ImportXML(CONCATENATE("http://data.alexa.com/data?cli=10&dat=snbamz&url=",$A$4),"//@rank[1]"))

theory 中,如果国家/地区排名存在,则以下内容应显示:(这不起作用)

=ImportXML(CONCATENATE("http://data.alexa.com/data?cli=10&dat=snbamz&url=",$A$4),"//@rank[2]")

以上是不工作的部分。它不是拉第二个“等级”属性的值。

我也试过了:(不起作用)

=ImportXML(CONCATENATE("http://data.alexa.com/data?cli=10&dat=snbamz&url=",$A$4),"/country/@rank")

帮助?我做错了什么?

【问题讨论】:

  • 你能告诉我们生成的 XML 吗?
  • 您能否提供您要导入的完整网站链接。
  • Alexa 从那时起似乎已经改变了 XML。 //@rank[1] 对我不起作用。我为全球排名使用了以下内容,它起作用了://*/POPULARITY/@TEXT

标签: xpath google-sheets google-docs alexa


【解决方案1】:

您的第二个 XPath 查询可能永远无法工作。您正在尝试查询元素的第二个 @rank 属性,但可能只有一个。如果要在整个文档中选择第二个@rank 属性,请使用(//@rank)[2]

您的替代查询不起作用,因为country 不是根元素。请改用//country/@rank。逐步提供完整路径可能是合理的,以防止获取错误的元素/属性(如果它们出现在文档中的其他位置):

/alexa/sd/country/@rank

请注意,XPath 主要区分大小写,尽管 Google 电子表格似乎不是。最好在此处使用所有大写字母,就像 XML 输入一样。

【讨论】:

    【解决方案2】:

    经过反复试验,我得出了以下解决方案,截至 2014-02-17 准确。

    =ImportXML(CONCAT("http://data.alexa.com/data?cli=10&url=", "www.google.com"), "number(//COUNTRY[@code='US']/@rank)")
    

    观察:

    • 标签似乎区分大小写
    • 属性必须小写

    【讨论】:

    • 我还想补充一点,我对这个 XPath 的运气更好:number(//POPULARITY/@text) 因为有些网站没有美国排名(例如 www.recycler.com)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多