【问题标题】:Can't figure out how to get time attribute不知道如何获取时间属性
【发布时间】:2012-04-30 04:20:34
【问题描述】:

我在使用 Google 电子表格中的 ImportXML() 函数时遇到了问题。我想检索在几个Reddit posts in a spreadsheet 上发帖的时间,但我只是幸运地获得了 2012 年 4 月 28 日,而不是 2012-04-28T02:19:06.348481+00:00,这正是我想要的。

比如on this web page,我查看源码看到如下:

<div class='spacer'><div class="linkinfo">
    <div class="date">
        <span>this post was submitted on &#32;</span>
            <time datetime="2012-04-28T02:19:06.348481+00:00">28 Apr 2012</time>
    </div>
<div class="score">

但是,这是我可以做任何事情的唯一路线:

=ImportXML(
"http://www.reddit.com/r/BuyItForLife/comments/jtjuz/bi4l_mission_statement_rules_etc/",
"//div[@class='date']")

有什么建议吗?我一直在搜索和尝试,搜索和尝试,但没有任何效果。

【问题讨论】:

  • 您要的是 XPath 表达式还是其他东西?
  • 我想是一个 XPath 表达式。无论在 Google 电子表格 ImportXML() 函数中如何工作。

标签: xml xpath google-sheets google-sheets-importxml


【解决方案1】:

IMPORTXML 要求文档遵循 ​​XML/XHTML 才能正常工作。看起来文档不符合这一点,所以,代替 IMPORTXML 使用 IMPORTDATA,然后使用 QUERY 和 REGEXEXTRACT。

例子:

A1:添加网址http://www.reddit.com/r/BuyItForLife/comments/jtjuz/bi4l_mission_statement_rules_etc/
A2:添加以下公式

=REGEXEXTRACT(QUERY(transpose(QUERY(importdata(A1),,1E+100)),,1E+100),
"datetime=""(.*?)""")

结果:2011-08-25T01:32:23+00:00

QUERY的使用说明:

IMPORTDATA 返回一个二维数组。 QUERY 用于连接数组的内容两次,第一次将所有行放在一起,第二次对所有列进行相同操作。

CONCATENATE 和 JOIN 不能使用,因为它们有 50000 个字符的限制。

【讨论】:

    【解决方案2】:

    您提出了棘手的问题,并且可能达到了 google 电子表格的限制 - 通常您可以检查 Xpath 属性的有效性,例如:

    //*[@datetime="2011-08-25T01:45:37+00:00"]
    

    答案单元格中的结果必须是

    TRUE
    

    查看沙盒第 21 行示例:

    //div/@class="md"   TRUE
    

    【讨论】:

    • 这提供了所有已知方法都无济于事的答案(如沙箱中所示)
    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多