我在我的eCommerce网站的所有页面上都有一个包含搜索引擎优化内容的div。我想计算一下div中的字数。它用于诊断大型爬网中的空页。
div始终按如下方式启动:
<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
发布于 2013-01-10 20:03:49
当它变得更复杂时(比如div中嵌套的div),正则表达式就会接近won't work anymore,您就需要一个html解析器,就像我的Xidel一样。然后你就可以找到文本了
无论是使用css:
xidel http://www.zando.co.za/women/shoes/ -e 'css(".fct-seo")' | wc -w或者模式匹配:
xidel http://www.zando.co.za/women/shoes/ -e '<div class="box fct-seo fct-text">{.}</div>' | wc -w它还将只打印文本,而不打印html标记。(如果您/某人需要它们,您可以添加--printed node-format xml选项)
发布于 2013-01-10 19:37:49
在Perl单行程序中,可以使用..操作符指定与感兴趣区域的开头和结尾匹配的模式:
$ perl -wne 'print if /<div class="box fct-seo fct-text/ .. /<\/div>/' shoes.html然后可以使用wc -w计算单词数
$ perl -wne 'print if /<div class="box fct-seo fct-text/ .. /<\/div>/' shoes.html | wc -w如果对HTML标记本身中的“单词”进行计数会影响数字,从而影响准确性,则可以使用以下命令从计数中删除这些单词:
$ perl -wne 'next unless /<div class="box fct-seo fct-text/ .. /<\/div>/; s/<.*?>//g; print' shoes.html | wc -w发布于 2013-01-10 20:40:32
尝试:
grep -Pzo '(?<=<div)(.*?\n)*?.*?(?=</div)' -n inputFile.html | sed 's/^[^>]*>//'https://stackoverflow.com/questions/14256917
复制相似问题