2014-04-23 61 views
0

我試圖從this website.獲取數據表並將其作爲JSON提供。
我正在採取與雅虎管道/ XPath的第一步,所以提前道歉爲noob問題。Xpath到JSON - 仍需要整理

我有a pipe只是使用XPath表達式:

//表1/TBODY/TR

這給了我(約30項片斷,1)以下JSON output

"items": [{ 
      "td": [{ 
       "a": { 
        "href": "http:\/\/www.hydro.com.au\/system\/files\/water-storage\/Web_Lakes_AUGUSTA.pdf", 
        "content": "Lake Augusta" 
       } 
      }, 
      { 
       "p": "2.58" 
      }, 
      { 
       "p": "Steady" 
      }], 
      "description": null, 
      "title": null 
     }, 

我想結束的是一個扁平化的版本,像這樣:

"items": [{ 
    { 
     "href": "http:\/\/www.hydro.com.au\/system\/files\/water-storage\/Web_Lakes_AUGUSTA.pdf", 
    }, 
    { 
     "content": "Lake Augusta" 
    }, 
    { 
     "p": "2.58" 
    }, 
    { 
     "p": "Steady" 
    }], 
}, 

有人可以幫我實現嗎?我應該在原始XPath方面做更多工作嗎?或者Pipes中是否有特定的處理器可以幫助我實現這個目標?

+0

XPath的結果反映了原始文檔結構。選擇一組並非完全分離的節點並且不能反映文檔結構(即你想要的輸出)是非常困難的。我建議你將XPath提供給你的JSON/JS對象數組取出來,然後在客戶端對其進行按摩,直到它滿足你的需求。我相信你也可以在Pipes本身中對它進行後處理,但是單獨使用XPath就無法工作。 – Tomalak

+2

您可能還想嘗試[和服](https://www.kimonolabs.com/),它們在網站規模上領先於雅虎管道。 – Tomalak

+1

對於踢腿,這裏是你的管道克隆,它向你展示瞭如何構建你想要的輸出:http://pipes.yahoo.com/pipes/pipe.info?_id=d2fe64963964bf6636b58fb7b9814ef0 – Tomalak

回答

1

使用XPath直接選擇數據結構是不可能的。

但是,操縱雅虎管道中的選定數據並不困難,例如將「循環」模塊與「項目生成器」模塊組合在一起。

Yahoo Pipes Item Builder

結果是一個進料,看起來像這樣:

{ 
    "count": 43, 
    "value": { 
     "title": "Hydro Tasmania Lake Levels", 
     "description": "Hydro Tasmania Lake Levels\n\nfrom StackOverflow Question http://stackoverflow.com/q/23248288/18771", 
     "link": "http://pipes.yahoo.com/pipes/pipe.info?_id=d2fe64963964bf6636b58fb7b9814ef0", 
     "pubDate": "Fri, 25 Apr 2014 06:12:35 +0000", 
     "generator": "http://pipes.yahoo.com/pipes/", 
     "callback": "", 
     "items": [ 
      { 
       "title": "Lake Augusta", 
       "link": "http://www.hydro.com.au/system/files/water-storage/Web_Lakes_AUGUSTA.pdf", 
       "meters": "2.58", 
       "comment": "Steady", 
       "description": null 
      }, 
      ... more ... 
     ] 
    } 
}