6

Web サイトが与えられた場合、各ページに XXXX@YYYYY.ZZZZ の形式でプレーン テキストで存在するすべての電子メール アドレスを、そのリンクとその下のすべてのサイトから再帰的に抽出するための、プログラムおよび/またはスクリプトを使用する最良の手順は何だろうかと思います。または一定の深さまで。

4

4 に答える 4

19

シェル プログラミングを使用すると、2 つのプログラムを一緒にパイプすることで目的を達成できます。

  • wget : すべてのページを取得します
  • grep : メールのみをフィルタリングして表示します

例:

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

wgetgrepmanの詳細については、ページを参照してください。

この例は、GNU bashバージョン 4.2.37(1) リリース、GNU grep 2.12、および GNU Wget 1.13.4 でテストされています。

于 2013-01-29T19:05:36.043 に答える
10

最初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

于 2012-12-13T11:47:00.703 に答える
0

wgetを使用してページを再帰的に取得し、正規表現を使用してアドレスを検索します(そのために、Pythonスクリプトを使用しますが、ほとんどすべての環境で同じ機能を提供できます)。

于 2012-12-13T11:02:08.440 に答える