使用jquery从ajaxed body中提取文本

时间:2010-11-01 13:25:10

标签: jquery html ajax dom html-parsing

我正在尝试从通过ajax下载的正文中提取文本。

我无法将这个新主体注入iframe或我的某个元素中,因为其中的脚本可能会破坏我的页面。

我希望能为我做的是:

$.ajax({ type: "GET",
  dataType: "text", /* this will avoid evaluating scripts */
  url: href,
  success: function (data) {
    var body = data.split('<body').pop().split('</body>')[0];
    if (body) {
      body = '<body' + body + '</body>';
      var pageText = $(body).find("style").remove().end()
          .find("script").remove().end()
          .find("noscript").remove().end()
          .text().replace(/\s{2,}/gi, " ").toLowerCase();
      if (pageText.length > 0)
          console.log(pageText);
});

我尝试将下载的主体放入DIV元素,因为jQuery忽略了BODY,用detach替换了find.remove,但没有取得多大成功。

有没有标准解决方案?

由于

2 个答案:

答案 0 :(得分:1)

jQuery.load()为您完成所有操作(删除脚本并可选择仅捕获所需的片段)。

E.g。

$('#result').load('ajax/test.html #container');

将来自网址container的ID为ajax/test.html的元素的内容加载到ID为result的元素(当前页面)上。

答案 1 :(得分:0)

jQuery不会忽略正文,请参阅here

这不起作用吗?

$.ajax({ type: "GET",
  dataType: "text", /* this will avoid evaluating scripts */
  url: href,
  success: function (data) {
    var $data = $(data);
    var newHTML = $("body", $data).html();
    $("body").html(newHTML);  
  }
});