【问题标题】:Javascript: How to retrieve text from a webpageJavascript:如何从网页中检索文本
【发布时间】: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 引擎执行此操作?
  • 为了解决跨域问题,是否可以运行代理服务?

标签: javascript html dom text web


【解决方案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 不支持跨域。您需要服务器端语言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      相关资源
      最近更新 更多