2011-05-26 81 views
2

我想從遠程HTML頁面抓取元素。因爲我正在請求來自不同域的數據,所以我使用下面的代碼將源添加爲腳本。是的,非常狡猾。使用Javascript抓取遠程頁面上的元素

<script type="text/javascript"> 
    var script = document.createElement('script'); 
    script.setAttribute('type', 'text/javascript'); 
    script.setAttribute('src', 'http://remoteDomain.com/page.html'); 
    document.getElementsByTagName('head')[0].appendChild(script); 
</script> 

上面的代碼獲取並會將整個頁面,我的文件頭。似乎工作正常。但是現在我想能夠通過ID獲取元素,甚至可以從這個源獲取正則表達式。

可以這樣做嗎?

我知道,上面的代碼是髒的,所以我很樂意接受任何建議,把它清理乾淨!

回答

3

確實很狡猾......但也有跨域,您可以使用AJAX tehniques。我們有所幫助:http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide

+1

這看起來像它應該做的伎倆,感謝克勞迪烏 – SpaghettiMonster 2011-05-26 02:48:02

+0

很高興我能幫助 – Claudiu 2011-05-26 02:48:35

+0

值得注意的是,「屏幕抓取」的解決方案使用YQL實際上是通過雅虎服務器無法通過客戶端瀏覽器請求的網頁。不幸的是,我需要一個客戶端來獲取動態生成的元素。 – SpaghettiMonster 2011-05-26 04:08:09

0

上面的代碼獲取並會將整個頁面,我的文件頭。

它並不是真的,它只是創建一個script元素,其src指向那裏。

它看起來像你試圖避開Same Origin Policy

您可以使用服務器端代理嗎?

+0

不幸的是不能去服務器端。 – SpaghettiMonster 2011-05-26 02:58:04

0

瀏覽器竭盡全力防止這種情況正在做客戶端,除非你想明確地閱讀該網站在選擇採用

否則任何隨機的網頁你訪問可以讀取信息你的銀行賬戶,說。