Javascript:如何从网页中提取文本

3
我希望能够将网页中的文本作为字符串提取出来。这个有可能实现吗?我是Javascript的新手。
例如:
var url = "http://en.wikipedia.org/wiki/Programming";
var result = url.getText();  <---- stores text as a string
document.write(result);

如何编写getText方法?可以使用整个HTML源代码(从中获取文本)或仅使用文本。我希望能够在Web浏览器内完成此操作。

我尝试了这个方法,我能够得到一个索引号:

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。这意味着可以阅读页面。我能否反过来输入索引以检索文本?


你的意思是整个HTML源代码? - user1534664
你是想在网页浏览器内完成还是使用像Node.js或Rhino这样的服务器端JS引擎? - psema4
为了解决跨域问题,运行代理服务是可行的吗? - psema4
3个回答

2
如果Ajax / 跨域情况对您不是问题,您可以使用以下方式提取网页的文本:

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)。

1

你最好使用更强大的服务器端语言来完成这个任务,而不是JavaScript。Python或PHP都是不错的选择。


3
JavaScript 也是一种服务器端语言;参见 http://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions。 - psema4
1
是的,但这并不是解析HTML的最佳选项,我认为Python会更好。 - Rayshawn
我过去用Perl来做这个,现在我用Node.js来做 - NPM有很多相关的模块。总有一天我会真正坐下来学习Python的 :) - psema4
我真的想在浏览器内完成它。浏览器扩展程序可以吗? - Qwertyfshag

1

Ajax不支持跨域。您需要使用服务器端语言。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接