按呈现方式从html中提取空白折叠文本
我使用html解析器(Neko)来提取html文档的自由文本。 因为我对文本的语义感兴趣,所以我必须特别注意出现在浏览器中的单词之间的距离 例如:按呈现方式从html中提取空白折叠文本,html,html-parsing,whitespace,collapse,removing-whitespace,Html,Html Parsing,Whitespace,Collapse,Removing Whitespace,我使用html解析器(Neko)来提取html文档的自由文本。 因为我对文本的语义感兴趣,所以我必须特别注意出现在浏览器中的单词之间的距离 例如: <H1>My title</H1> <P>Hello World</P> 在 <style> p { white-space:pre; } </style> 我想用不同的方式来对待它,因为“Hello”在语义上与“World”一词无关。正如在其
<H1>My
title</H1>
<P>Hello
World</P>
在
<style>
p { white-space:pre; }
</style>
我想用不同的方式来对待它,因为“Hello”在语义上与“World”一词无关。正如在其他文章中所说的,解析和呈现的功能是有区别的。我对呈现后出现的单词之间的联系感兴趣,因为解析显然不会像浏览器上显示的那样折叠空白
在浏览器上阅读html时,有没有办法从html中提取空白折叠文本?只要看一下W3C的基本信息
用例子更好地解释:
我还认为,你必须把hello放在1中,把world放在另一个中,这样效果才会起作用。
否则,它们都会向右移动。我以前没有使用过Neko,但您需要访问元素的样式,并查看空白
属性是否设置为pre
、pre wrap
或preline
如果是pre
或pre wrap
,请将文本中的任何空白组替换为单个空格
否则,如果在行前
,则仅用单个空格替换空格/制表符组
否则,请勿修改文本
下面是一个使用JQuery的示例:
JQuery
请尝试“预包装”或“预行”(pre-wrap或pre-line),如果这不正常,这不是“预”选项的问题,而是加载css或seomThingTanks时的问题,但我想要的是根据浏览器上的显示方式从html代码中提取Hello World
和Hello[Spaces]World
。抱歉。我想我不是很清楚。我的问题不是我作为一个html编辑器试图让浏览器显示我想要的文本。我实际上想做的是获取一个html文件并对其进行解析,以便提取浏览器上显示的文本(根据不同的情况使用连续空格或不使用连续空格)。我想我不太明白。但在我之上还有另一个答案。看看你是不是在寻找:)谢谢你把我推到正确的方向。我真的希望我不需要访问样式,也不需要在应用的元素上查找标记和折叠空格——我搜索了很多更简单的东西,但现在我发现没有办法了。所以我的第一步是用css解析器解析样式块。谢谢
<style>
p { white-space:pre; }
</style>
My title
Hello
World
function getRenderedText(obj) {
var text = obj.text();
var renderedText;
switch (obj.css('white-space')) {
case 'pre':
case 'pre-wrap':
renderedText = text;
break;
case 'pre-line':
renderedText = text.replace(/[ \t]+/,' ');
break;
default:
renderedText = text.replace(/\s+/,' ');
}
return renderedText;
}