首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BASH -选择多行Div之间的所有代码

BASH -选择多行Div之间的所有代码
EN

Stack Overflow用户
提问于 2013-01-10 19:28:19
回答 3查看 1K关注 0票数 2

我在我的eCommerce网站的所有页面上都有一个包含搜索引擎优化内容的div。我想计算一下div中的字数。它用于诊断大型爬网中的空页。

div始终按如下方式启动:

代码语言:javascript
复制
<div class="box fct-seo fct-text

然后它包含<h1><p><a>标签。

然后,很明显,它会以</div>结束

如何使用SED、AWK、WC等获取div开始和结束div之间的所有代码,并计算出现了多少个单词。如果它有90%的准确率,我很高兴。

在找到第一个关闭的</div>之前,您必须以某种方式告诉它停止扫描。

下面是一个可以使用的示例页面:

http://www.zando.co.za/women/shoes/

非常感谢。-P

EN

回答 3

Stack Overflow用户

发布于 2013-01-10 20:03:49

当它变得更复杂时(比如div中嵌套的div),正则表达式就会接近won't work anymore,您就需要一个html解析器,就像我的Xidel一样。然后你就可以找到文本了

无论是使用css:

代码语言:javascript
复制
xidel http://www.zando.co.za/women/shoes/  -e 'css(".fct-seo")' | wc -w

或者模式匹配:

代码语言:javascript
复制
xidel http://www.zando.co.za/women/shoes/  -e '<div class="box fct-seo fct-text">{.}</div>' | wc -w

它还将只打印文本,而不打印html标记。(如果您/某人需要它们,您可以添加--printed node-format xml选项)

票数 3
EN

Stack Overflow用户

发布于 2013-01-10 19:37:49

在Perl单行程序中,可以使用..操作符指定与感兴趣区域的开头和结尾匹配的模式:

代码语言:javascript
复制
$ perl -wne 'print if /<div class="box fct-seo fct-text/ .. /<\/div>/' shoes.html

然后可以使用wc -w计算单词数

代码语言:javascript
复制
$ perl -wne 'print if /<div class="box fct-seo fct-text/ .. /<\/div>/' shoes.html | wc -w

如果对HTML标记本身中的“单词”进行计数会影响数字,从而影响准确性,则可以使用以下命令从计数中删除这些单词:

代码语言:javascript
复制
$ perl -wne 'next unless /<div class="box fct-seo fct-text/ .. /<\/div>/; s/<.*?>//g; print' shoes.html | wc -w
票数 1
EN

Stack Overflow用户

发布于 2013-01-10 20:40:32

尝试:

代码语言:javascript
复制
grep -Pzo '(?<=<div)(.*?\n)*?.*?(?=</div)' -n inputFile.html | sed 's/^[^>]*>//'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14256917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档