0

我在使用ImportXML()Google 电子表格中的函数时遇到问题。我想在电子表格中检索在几个 Reddit 帖子上发布的时间,但我只有 2012 年 4 月 28 日才有运气,而不是 2012-04-28T02:19:06.348481+00:00,这就是我想要的喜欢。

例如,在这个网页上,我查看源代码并看到以下内容:

<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']")

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

4

2 回答 2

3

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

例子:

A1:添加 URL 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 个字符的限制。

于 2016-05-26T06:15:45.490 回答
-3

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

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

结果答案单元格必须是

TRUE

请参阅沙盒第 21 行示例:

//div/@class="md"   TRUE
于 2015-10-31T15:21:55.777 回答