Web サイトが与えられた場合、各ページに XXXX@YYYYY.ZZZZ の形式でプレーン テキストで存在するすべての電子メール アドレスを、そのリンクとその下のすべてのサイトから再帰的に抽出するための、プログラムおよび/またはスクリプトを使用する最良の手順は何だろうかと思います。または一定の深さまで。
4 に答える
シェル プログラミングを使用すると、2 つのプログラムを一緒にパイプすることで目的を達成できます。
例:
wget -q -r -l 5 -O - http://somesite.com/ | grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b"
wgetは、quiet モード ( -q ) で、 somesite.com.br から最大深度レベル 5 ( -l 5 ) ですべてのページを再帰的に ( -r ) 取得し、すべてを標準出力 ( -O - ) に出力します。
grepは拡張正規表現 ( -E ) を使用し、メールアドレスのみ ( -o ) を表示します。
すべての電子メールは標準出力に出力され、コマンドに追加することでファイルに書き込むことができます> somefile.txt
。
wgetとgrepman
の詳細については、ページを参照してください。
この例は、GNU bashバージョン 4.2.37(1) リリース、GNU grep 2.12、および GNU Wget 1.13.4 でテストされています。
最初wget
に、URL からページを再帰的にダウンロードするために使用します。-l
オプションは再帰深度で、以下に設定します1
。
$ mkdir site
$ cd site
$ wget -q -r -l1 http://www.foobar.com
次に、再帰grep
を実行して電子メール アドレスを抽出します。(以下の正規表現は完全ではありません。すべてのアドレスが取得されていないことがわかった場合は、微調整が必要になる場合があります。)
$ grep -hrio "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b" *
余談ですwget
が、ダウンロードしたコンテンツをディスクに保存する代わりに stdout に出力するオプション ( ) がありますが、残念ながら再帰 ( ) モード-O -
では機能しません。-r
wgetを使用してページを再帰的に取得し、正規表現を使用してアドレスを検索します(そのために、Pythonスクリプトを使用しますが、ほとんどすべての環境で同じ機能を提供できます)。