Google电子表格ImportXML - 无法弄清楚如何获取时间属性

时间:2012-04-30 04:20:35

标签: xml xpath google-sheets spreadsheet

我在使用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']")

有什么建议吗?我一直在寻找和尝试,搜索和尝试,没有任何工作。

2 个答案:

答案 0 :(得分:0)

IMPORTXML要求文档遵循XML / XHTML才能正常工作。看起来该文档不符合这一点,因此,使用IMPORTDATA而不是IMPORTXML,然后使用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返回一个2D数组。 QUERY使用两次来连接数组的内容,第一次将所有行放在一起,第二次对所有列执行相同操作。

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

答案 1 :(得分:-3)

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

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

结果应答单元格必须

TRUE

在沙箱行21样本中看到:

//div/@class="md"   TRUE