使用 Kettle 獲取網頁數據。當然,這里的網頁數據主要指結構化數據,可能是 xml 格式、json 格式 或者 csv 文件等。以 http://services.odata.org/V3/Northwind/Northwind.svc/Products/ 為例,這是 odata 提供的符合 REST 規范的數據。通過這個 url 獲取的產品數據,默認為 xml 格式。我們將以該 url 演示如何獲取 xml 格式以及 json 格式的數據。
使用 Http Client 獲取網頁數據
本例通過 Http client 獲取網頁包括如下步驟:
第一步:通過「生成記錄」組件,將 url 保存到常量中
新建一個字段,名稱為 url,類型為 String,值為:
http://services.odata.org/V3/Northwind/Northwind.svc/Products/
第二步:通過「HTTP client」組件,獲取網頁的內容
將 url 獲取的內容,放在結果字段 result 中。
第三步:從 XML 獲取數據
我們知道通過這個 url 獲取的是 xml 格式數據,所以使用 「Get data from XML」組件。第三步有點復雜。
因為上一步輸出的字段為 result,所以本步驟 xml 源字段為 result。切換到「內容」頁簽。
解釋下「循環讀取路徑」。如果我們查看本例的目標網頁,我們發現有多筆數據:
所以要讀取所有的產品數據,就要用到循環,而且抓取到這些數據,需要用到 XPath 路徑,也就是 /feed/entry/content/m:properties。因為 XPath 中有 namespace,所以「考慮命名空間」選中。
切換到「字段」頁簽,在 /feed/entry/content/m:properties 這個路徑下,假設我們只需要三個字段:
第四步:使用「選取字段」組件,可以簡單的展示數據。
完成以上步驟后,運行,既可以獲取到數據,截圖如下。
獲取 json 格式數據
http://services.odata.org/V3/Northwind/Northwind.svc/Products/
提供的是 OData 服務,所以我們也可以通過參數 $format=json 來得到 json 格式的數據。然后用 HTTP Client 處理 json 數據。
Kettle 的處理步驟如下:
這里主要說明與處理 xml 數據有差異的部分。
第一步,生成記錄。url 的值多了一個參數:http://services.odata.org/V3/Northwind/Northwind.svc/Products/?$format=json。
第二步, Http Client,相同,沒有差異。
第三步,因為 HTTP Client 獲取的是 json 數據,所以用 JSON Input
獲取數據。主要區別在「字段」這個頁簽:
要獲取 ProductID, ProductName 和 UnitPrice 三個字段,使用的是 JSONPath
語法。這里不對 JSONPath 做過多說明。$..ProductID 表示獲取所有
ProductID 字段。關於 JSONPath,自行參考:http://goessner.net/articles/JsonPath/。
---------------------
作者:stone0823
來源:CSDN
原文:https://blog.csdn.net/stone0823/article/details/78823052
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!