Becky! メールアドレス抽出方法
- (2012-09-01 05:53:12)
抽出ソフトはあまり出回っていない
こういう需要は多そうだが、検索してみてもフリーのソフトやアプリは見つからなかった。
抽出サイトは存在する
メルアドを抽出してくれるサイトはあった。
メールアドレスが含まれるテキスト文を挿入し実行ボタンを押すと抽出結果が出る模様。しかし、誰が何の目的で運営しているのか不明のサイトに、第三者のメルアドが含まれるデータを送ることはリスクが高いので近づかなかった。
(1)Becky!のデータをエクスポートする
エクスポートによって、ヘッダーもメール本文も含まれる平のテキスト文になる。文字コードは「JIS」のようだ。
このごちゃ混ぜのテキスト文からメルアド抽出。
(2)メールアドレスを正規表現で抽出する問題点
秀丸マクロや簡単なプログラムで抽出することができる。
ポイントはメールアドレスの正規表現。下記の表現では、行単位だが、概ね抽出される。
.+@.+\..+
問題点は、「@」が含まれる文字列には何にでも反応するので、無関係な文字列や特にシステム用のメールアドレスも抽出してしまうこと。かなりゴミが含まれることになる。
(3)ヘッダーの「From: 」文字列で検索・抽出
「From: 」の後にはメールアドレスがくるので、これを検索しながら追加コピーしていく方法。
(秀丸マクロ)
gofiletop;
//disabledraw;
//最初のメルアドを探してクリップボードにコピー(行単位)。
searchdown "^From: ",regular;
if(result!){
goto endmacro;
}else{
selectline;
copyline;
down;
}
//その後のメルアドを探してクリップボードに追加コピーしていく(行単位)。
while(1){
searchdown "^From: ",regular;
if(result!){
goto endmacro;
}else{
selectline;
appendcopy;
down;
}
}
endmacro:
//enabledraw;
message "終了";
endmacro;
(4)本文中のメルアド項目で検索・抽出
たとえば本文中に「●メール:」のような項目があってメールアドレスがあるのなら、それを検索しながら追加コピーしていく方法。
(秀丸マクロ)
上記マクロの「^From: 」を「^●メール:」に変更。改行がある場合は、1つdown;を入れて改行の上、コピーを繰り返す。
gofiletop;
//disabledraw;
//最初のメルアドを探してクリップボードにコピー(行単位)。
searchdown "^●メール:\n",regular;
if(result!){
goto endmacro;
}else{
down;
selectline;
copyline;
down;
}
//その後のメルアドを探してクリップボードに追加コピーしていく(行単位)。
while(1){
searchdown "^●メール:\n",regular;
if(result!){
goto endmacro;
}else{
down;
selectline;
appendcopy;
down;
}
}
endmacro:
//enabledraw;
message "終了";
endmacro;
(5)重複メアドの削除
Excel → メニュー → 「データ」 → 「フィルタ」 →
「フィルタオプションの設定」 → 「重複するデータは無視する」 →
その部分をコピーすると重複なしのデータ
(6)複数の方法で抽出し、手作業で選別する
今回は上記(3)と(4)の方法で抽出し、Excel上で「=exact(A1,B1)」のような関数で比較しながらメールアドレスの精度を高める。
今回のトライアルでは「^From: 」での検索・抽出がもっとも精度のよい抽出方法だった。