我在使用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  </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']")
有什么建议吗?我一直在寻找和尝试,搜索和尝试,没有任何工作。
答案 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