2014-05-08 45 views
2

我繼承了一些使用YQL查詢從外部站點獲取所有HTML的代碼。數據然後被過濾然後輸出到容器。 YQL查詢不是返回XML,而是HTML,我試圖將格式更改爲JSON,但沒有運氣。也許我搞亂了語法。刮格式HTML格式的最佳做法

這裏是YQL查詢:

$.getJSON("http://query.yahooapis.com/v1/public/yql?" + 
       "q=select%20*%20from%20html%20where%20url%3D%22" + 
       encodeURIComponent(url) + 
       "%22&format=JSON&callback=?", 

然後此數據被傳遞到該過濾器功能(這不是代碼整片)

function filterData(data) { 

     data = data.replace(/<?\/body[^>]*>/g, ''); 
     data = data.replace(/[\r|\n]+/g, ''); 
     data = data.replace(/<--[\S\s]*?-->/g, ''); 
     data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g, ''); 
     data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g, ''); 
     data = data.replace(/<p>5\) \{ return; }.* \} \}; <\/p>/, ''); 
     data = data.replace(/<body[^>]*>/g, ''); 
     data = data.replace(/<hr[^>]*>/g, ''); 
     data = data.replace(/<img[^>]*>/g, ''); 
     data = data.replace(/<table[^>]*>/g, '<table>'); 

     return data; 
} 

感覺像,必須有一個將這個返回的HTML數據放入某種模板或其他東西的更好方法,我對jQuery非常不熟悉,非常感謝任何幫助!

+0

這很奇怪......我一直接受來自該服務的JSON,但我多年沒有使用它。 – Brad

+0

我只是將HTML放入一個不可見的DOV('$(「#隱藏」)。html(data)'),然後只使用正常的jQuery選擇器,以便搜索並刪除/清理任何東西。 – RoToRa

回答

1

你想抓住他們作爲JSON在jQuery中更容易處理。您只需確保將大寫JSON更改爲小寫json即可從API獲取JSON輸出。

$.getJSON("http://query.yahooapis.com/v1/public/yql?" + 
       "q=select%20*%20from%20html%20where%20url%3D%22" + 
       encodeURIComponent(url) + 
       "%22&format=json&callback=?", 
+0

我認爲從長遠來看,這是最好的解決方案,數據將更容易處理。謝謝! – MannfromReno