Javascript:如何从网页中检索文本

Posted

技术标签:

【中文标题】Javascript:如何从网页中检索文本【英文标题】:Javascript: How to retrieve text from a webpage 【发布时间】:2012-10-23 16:56:22 【问题描述】:

我想检索网页中的文本作为字符串。这可能吗? 我是 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 的索引。这意味着阅读一个页面是可能的。我可以反其道而行之,输入索引来检索文本吗?

【问题讨论】:

你的意思是整个 HTML 源代码? 您是希望在 Web 浏览器中执行此操作,还是从 Node.js 或 Rhino 等服务器端 JS 引擎执行此操作? 为了解决跨域问题,是否可以运行代理服务? 【参考方案1】:

如果 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

【讨论】:

【参考方案2】:

您最好使用功能更强大的服务器端语言来执行此操作,而不是 JavaScript。 Python 或 php 将是不错的选择。

【讨论】:

JavaScript 也是一种服务器端语言;另见en.wikipedia.org/wiki/… 是的,但这不是解析 HTML 的最佳选择,Python 会更好,恕我直言。 我以前在 Perl 中执行此操作,现在我在 Node.js 中执行此操作 - NPM 有很多相关的模块。有一天我真的会坐下来学习 Python :) 我真的很想在浏览器中进行。浏览器扩展会起作用吗?【参考方案3】:

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

【讨论】:

以上是关于Javascript:如何从网页中检索文本的主要内容,如果未能解决你的问题,请参考以下文章

从 Java 检索网页上动态呈现的 SVG

如何使用javascript从网页中获取点击或选择的文本? [复制]

如果使用JavaScript同时包含整数和字符串,如何从CRM的文本字段的单行中检索整数值

如何通过从数据库中检索值来显示文本框中的值?

从 MySQL 数据库中检索数据并使用 java [重复] 在 html 中显示它

如何使用 javascript 将网页作为纯文本获取,而没有任何 html? [复制]