Google Spreadsheet importxml时间戳

时间:2012-12-17 16:09:44

标签: xpath xml-parsing google-docs google-sheets

我一直在尝试将zap2it.com链接中的时间戳导入我的谷歌spreasheet超过2个小时。



这是链接我正在尝试从中导入 http://affiliate.zap2it.com/tvlistings/ZCGrid.do?zipcode=78238&lineupId=DISH641:-



这是什么我尝试导入
enter image description here

这是我到目前为止尝试的内容

=importxml("http://affiliate.zap2it.com/tvlistings/ZCGrid.do?aid=dish&pkg=8388608&fromProvider=true&zipcode=78238&x=52&y=18"&B1,"//body//div[3]/div/div/div[3]/div/div")




修改 我能够改善并获得更好的结果

//body//div[3]/div/div/div[1]//*

但它显示了整个页面的时间戳。不完全是我需要的。

1 个答案:

答案 0 :(得分:1)

[第一个复杂因素是从解除引用该URI返回的数据流实际上不是XML;它有几千个格式错误(URI中未转义的&符号,未转义的&符号和脚本中的小符号,一些嵌入式HTML,一些杂项错误)。但是,由于你没有报告问题,我会假设在服务器和你的XPath表达式之间的某个地方正在做一些整理。]

如果您使用文档中广泛使用的idclass属性,我认为您会获得更好的结果。你想要的材料在源代码中看起来像这样(你可以使用任何基于浏览器的调试工具来找到它;我在Safari中使用'Web Inspector');我已经缩进以使结构更加可见,并修复了一个a元素中的一些格式错误(缺少属性 - 值对之间的空格)。

<div class="zc-tn" id="zc-tn-top">
  <div class="zc-tn-i">
    <a href="ZCGrid.do?fromTimeInMillis=1355781600000" 
       class="zc-tn-l" 
       title="Move the grid three hours earlier"></a>
    <div class="zc-tn-c">
      <span class="zc-tn-z" 
            title="Central Standard Time">CST</span>
      <div class="zc-tn-t">7:00 PM</div>
      <div class="zc-tn-t">7:30 PM</div>
      <div class="zc-tn-t">8:00 PM</div>
      <div class="zc-tn-t">8:30 PM</div>
      <div class="zc-tn-t">9:00 PM</div>
      <div class="zc-tn-t">9:30 PM</div>
    </div>
    <a href="ZCGrid.do?fromTimeInMillis=1355803200000" 
       class="zc-tn-r" 
       title="Advance the grid three hours"></a>
  </div>
</div>

简单搜索验证值zc-tn-top确实是唯一的文档中的ID值。鉴于此,一个简单的XPath表达式来检索其显示在图像中圈出的所有元素是(假设xhtml绑定到XHTML命名空间):

//xhtml:div[@id='zc-tn-top']//xhtml:div[@class='zc-tn-t']

从您的问题看,您的XPath评估程序是命名空间挑战或命名空间遗忘,因此您可能需要将其写为

//div[@id='zc-tn-top']//div[@class='zc-tn-t']