2012-05-21 73 views
2

顯然修改它是不可能的。是否有可能讀取其他網址的dom結構?

但是你會認爲只是閱讀它應該不成問題?

如果我有我的.js在別人的​​系統上運行,我想分析另一個URL的客戶端,有沒有辦法做到這一點?

一些簡單的像拉標題標籤或拉網址......也許加載網站到一個iframe來完成這個?

+3

如果您問是否可以檢查另一個來源的文檔的DOM,那麼不會。它將允許以表單形式竊取用戶數據,或者僅以文本形式提供。 –

+1

相同的原產地政策阻止你這樣做。你可以看看http://stackoverflow.com/questions/3076414 – Mic

+0

爲什麼你想從一個網絡客戶端,而不是像爬蟲/機器人這樣的服務器端程序做到這一點? – Tharabas

回答

4

如果我的權利得到您的問題,

使用YQL跨域例如,

var url = 'xyz.com'; // website you want to scrape 
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&format=json&callback=?'; 
$.getJSON(yql,function(data){ 
    if (data.results[0]){ 
     console.log(data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')); // The scraped data (the whole webpage) 
    } 
}); 

參考: How can i get Equivalent method of HttpwebRequest in javascript

+0

什麼是yql?這看起來很酷..它有什麼作用? –

+0

雅虎查詢語言...我被Google搜出了......你只是給我一個簡短的簡介? –

+0

某種爲你解析的雅虎api? –

1

如果域不匹配,由於安全異常,您將無法執行此操作。如果您控制其他域,則應研究添加跨域文件以允許通過javascript訪問。

+0

Gabe的答案呢? –

+0

我沒有看到加貝的答案。 –

+1

@SteveBinder:它已被刪除。 –

1

您可以通過AJAX GET請求獲取html源代碼。一則可以在HTML代碼中搜索或將其分配給一個iframe/...

+3

如果URL來自其他域,則不適用。 –

+0

哦,是的,你說得對,我沒有考慮政策 – Marduk

3

你可以用做xmlhttp

function getSourceAsDOM(url) 
{ 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.open("GET",url,false); 
    xmlhttp.send(); 
    parser=new DOMParser(); 
    return parser.parseFromString(xmlhttp.responseText,"text/html");  
} 
相關問題