0

Web での単語の分布を計算するスクリプトを作成しています。私がしなければならないことは、できるだけ多くのランダムな Web サイトをチェックし、それらのサイト内の単語の数を数えてリストし、ほとんどの場合に出現する単語がリストの一番上になるように並べることです。私がやっていることは、ランダムなIP番号を生成することです:

a=`expr $RANDOM % 255`
let "a+=1"
b=`expr $RANDOM % 256`
c=`expr $RANDOM % 256`
d=`expr $RANDOM % 256`
ip=$a.$b.$c.$d

その後、nmap を使用して、これらのサイトでポート 80 または 8080 が開いているかどうかを確認して、それが Web サイトである可能性を確認します。

IP が Web サイトに属していないことが確実な場合は、そのアドレスをブラック リスト ファイルに追加して、再度チェックされないようにします。

ポート 80 またはポート 8080 が開いている場合は、逆ルックアップで IP を解決し、その IP に属するすべてのドメイン名を取得する必要があります。

問題は、これらのコマンドのいずれかを実行すると、出力は単一の PTR レコードのみであり、複数存在する可能性があることです。

dig -x ipaddres +short
nslookup ipaddress
host ipaddress

これはbashで解決することを好みますが、Cに解決策がある場合はそれも役立ちます

その後、w3m を使用して Web サイトのページをファイルにコピーし、単語の出現回数をカウントします。

また、ここで別の問題があります。インデックスページだけでなく、サイトに属する利用可能な公開ページをすべてチェックする方法はありますか?

どんな助けでも大歓迎です

4

1 に答える 1

3

多くの Web サイトは、仮想ホストなどのために、IP アドレスだけではアクセスできません。これを行うことで、ウェブ上で単語の均一な分布が得られるかどうかはわかりません. さらに、Web サイトをホストする IP アドレスは、32 ビットの数値をランダムに生成するため、実際には均等に分散されていません。実際の Web サイトの大部分を持つホスティング会社は狭い範囲に集中し、他の多くの IP はおそらく何もホストされていない ISP のエンドポイントになります。

上記と、あなたが解決しようとしている問題を考えると、クロールする URL の分布を取得し、それらの単語の頻度を計算することを実際にお勧めします。これを行うための優れたツールは、Python、Perl、Ruby などの WWW:Mechanize のようなものです。制限要因は処理速度ではなくインターネット接続になるため、低レベルでこれを行う利点はありません。言語。これにより、同じ IP で複数のサイトにヒットする可能性が高くなります。

于 2012-08-04T02:52:11.787 に答える