2012-11-03 38 views
2

我想檢索網頁中的文本作爲字符串。這可能嗎? 我是新來的Javascript。Javascript:如何從網頁中檢索文本

例如:

var url = "http://en.wikipedia.org/wiki/Programming"; 
var result = url.getText(); <---- stores text as a string 
document.write(result); 

我怎樣寫了gettext方法?以太完整的HTML源代碼(我可以用它來獲取文本)或只是文本。我想從網絡瀏覽器中執行此操作。

我嘗試這樣做,我能夠得到一個索引號:

var url = "http://www.youtube.com/results?search_query=cat&page=2"; 
var result; 
function go(){ 
    result = url.search(/cat/i); 
    document.write(result); 
} 

這給了我44指數這意味着,閱讀頁面是可能的。我可以做相反的事,並輸入索引來檢索文本?

+0

你的意思是完整的HTML源? – user1534664

+0

您是否正在尋找網頁瀏覽器或服務器端JS引擎(如Node.js或Rhino)? – psema4

+0

爲了解決跨域問題,運行代理服務的可能性有多大? – psema4

回答

2

你最好用更強大的服務器端語言來做到這一點,而不是JavaScript。 Python或PHP將是不錯的選擇。

+2

JavaScript也是一種服務器端語言;另請參閱http://en.wikipedia.org/wiki/Comparison_of_server_side_JavaScript_solutions – psema4

+0

是的,但這不是解析HTML的最佳選擇,Python會更好,恕我直言。 – Rayshawn

+0

我曾經在Perl中這樣做過,現在我在Node.js中完成它 - NPM有很多相關的模塊。有一天,我會坐下來學習Python :) – psema4

2

Ajax不支持跨域。你需要服務器端語言。

2

如果阿賈克斯/跨域的情況下是不是你的問題,你可以用

var el = document.body; // or some other element reference 
var text = el.innerText || el.textContent; 

提取網頁的文字如果您需要在同一個域中從網頁閱讀的文本你應用程序,你可以直接使用Ajax。

如果您需要讀取從頁的文字你的域之外,你必須通過一些額外的箍,如設置代理服務器或處理CORS跳 - http://en.wikipedia.org/wiki/Cross-origin_resource_sharing