使用 Jquery 抓取 BODY 中的任何文本节点

Posted

技术标签:

【中文标题】使用 Jquery 抓取 BODY 中的任何文本节点【英文标题】:Grab any Text Node within the BODY using Jquery 【发布时间】:2011-04-26 09:21:18 【问题描述】:

希望有人可以提供帮助。我需要抓取正文中的任何文本节点。即使它不包含在任何其他元素中。

我试过了:

$("p, div, html, body").each(function()
    $(this).contents().filter(function() 
        var regExText = /(\w|\d|,|;|&)/;                                           
        if (this.nodeType == 3 && regExText.test(this.nodeValue)) 
            $(this).wrap('<span></span>');
            
      );
);

这是在 Ps 和 Divs 中抓取它们,而不是在 body 本身中。

【问题讨论】:

哪个是正确的答案? ;-) 【参考方案1】:

这不是你想要的吗?

$('body').text();

【讨论】:

【参考方案2】:

contents() 只会返回您指定的标签的子元素 - p、div、html 和 body。例如,将找不到 td 或 h1 标记内的文本节点。

使用 jQuery 获取 &lt;body&gt; 标记内所有文本节点的一种方法是搜索 body 的子节点及其后代,

$("body, body *").contents().filter(function() 
    // if this is a text node and matches regex
    // then do something to it

您可以在此answer 中找到各种其他非 jQuery 方法来获取所有文本节点。

【讨论】:

【参考方案3】:

你所拥有的应该可以工作,you can test it here。我想说没有必要在你的选择器中包含html,在&lt;span&gt; 中你想要处理的&lt;body&gt; 元素之外真的有什么吗?

【讨论】:

【参考方案4】:

为什么不直接清理 HTML?

var strInputCode=$("body").html();
var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
alert("Output text:\n" + strTagStrippedText);  

我必须承认可能是 $("body").text() 做的。

【讨论】:

以上是关于使用 Jquery 抓取 BODY 中的任何文本节点的主要内容,如果未能解决你的问题,请参考以下文章

抓取时如何避免加入节点中的所有文本

使用 Html Agility Pack 从 HTML BODY 节点中提取内部文本

Charles抓取请求中的图片

网站不允许右键单击,网络抓取不显示正文标签之间的文本

使用 JQuery 设置 asp.net 单选按钮列表项的值(和文本)

如何使用jquery从url中抓取数据列表