2

SEO コンテンツを保持するすべての e コマース サイトのページに 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

4

3 に答える 3

3

それがより複雑になると(そのdivにネストされたdivのように)、正規表現アプローチは機能しなくなり、私のXidelのようにhtmlパーサーが必要になります。次に、テキストを見つけることができます

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-10T12:03:49.223 に答える
1

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-10T11:37:48.693 に答える
1

試す:

grep -Pzo '(?<=<div)(.*?\n)*?.*?(?=</div)' -n inputFile.html | sed 's/^[^>]*>//'
于 2013-01-10T12:40:31.777 に答える