Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Cкрипт для отсеивания мыл (https://forum.antichat.xyz/showthread.php?t=48080)

Lancellot 01.09.2007 15:57

Cкрипт для отсеивания мыл
 
ку
встеретился с такй проблемой, есть тхт файл в нём станицы в которых мыла .не подскажете скрипт желательно на перле для отсеивания мыл с страниц типа парсера,может я не внимательно искал но вроди не нашол на форуме)
спс

Piflit 01.09.2007 15:58

тут глянь

Lancellot 01.09.2007 16:01

что-то невразумительное ))
а по просче есть?хотя идея ясна

n1†R0x 01.09.2007 16:38

Написал небольшой скрипт, по-прежнему не работает с двойными доменами (user@company.net.ua), но с обычными вроде норм, протестируйте плз)

PHP код:

<?php
    
if (!isset($fname))
    {
        print 
"<form method='post'>Plz print the filename:<br/><input type='text' name='fname' length='15' maxlength='20'/><br/>";
        print 
"<input type='submit' name='go' value='go'></form><br/><br/>";
    }
    else
    {
        
$i=0;
        
$fname $_POST['fname'];
        
$error "Cannot open file $fname. <br> <a href='javascript:history.go(-1);'>Get Back</a>";
        
$file file_get_contents($fname) or die ($error);
        
$pattern "/([a-z_-]+@([a-z][a-z-]*\.)+([a-z]{3}|ru|com|net|org|gov|edu|mil|info|biz|cc|net.ua|com.ua|org.ua|org.ru|com.ru|net.ru|spb.ru))/im";
        
preg_match_all($pattern$file$ok);
        while (@
$ok[0][$i])
        {
            print 
$ok[0][$i]."<br>";
            
$i++;
        }
    }
?>


Ch3ck 01.09.2007 19:51

Дети мои...
PHP код:

preg_match("|[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}|i"$email$out);
  echo 
$out[0]; 


ant0ha 01.09.2007 19:52

эффективнее же искать до первого пробела или переноса строки до и после собаки, и тогда не будет проблем с двойными и более доменами :)

n1†R0x 02.09.2007 00:31

Цитата:

Сообщение от ant0ha
эффективнее же искать до первого пробела или переноса строки до и после собаки, и тогда не будет проблем с двойными и более доменами :)

тоже не лучший вариант)
представь себе, что мыла, предположим, в таком формате:

PHP код:

<a href='mailto:blablabla'>email</a><br

у меня в мыслях только 2 варианта: чтение до символа, не входящего в диапазон буквы_цифры, либо чтение до последней точки.. как реализовать второе - не знаю :(

Underwit 02.09.2007 00:57

вот тут глянь http://forum.antichat.ru/showpost.php?p=290912&postcount=44

а вот на перле от Genom

PHP код:

#!/usr/bin/perl

if (@ARGV==0) { print "\n###########Genom Spam List Bilder v1.3##################\n\nUse: perl spam-bilder.pl /start_folder/\n"; exit;};

$asd=@ARGV[0]; 
$i=0;
$a=1;
@
dir[0]=@ARGV[0];
opendir FF$asd;
while (
$zz=readdir FF) {
$aa=$zz=~m/\./;
 if (
$aa==0) {if ($asd=="/") {@dir[$i]="$asd$zz";$i++;}else{@dir[$i]="$asd/$zz";$i++;} }  
closedir dir;}

papki(@dir[$a]);
for 
$qq (@dir){print "$qq\n"}; # убери в начале решетку если хочешь чтобы выводились найденные папки

##################рекурсивная функция которая забивает пути к папкам в массив @dir ##################
sub papki {
opendir FF,@dir[$a];
while (
$zz=readdir FF) {
$aa=$zz=~m/\./;
 if (
$aa==0) {@dir[$i]="@dir[$a]/$zz";$i++;}  };
closedir dir;$a=$a+1;

if (
$a<$i) {papki(@dir[$a]);}
};@
dir[$a];
###########################функция поиска файлов################

# получаем имена всех файлов в обнаруженных папках и заносим их в массив @file
# под категорию файлов подпадают объекты в именах которых есть точка--- так что некоторые папки может 
# не обработать(то есть признает их файлами)- это связано с тем что пишу под виндой и параметры 
# распознования файлов линукса -e и -f у меня почемуто не работают =( ---
$xy=0;

for 
$qqq (@dir){
opendir FF$qqq;
while (
$zz=readdir FF) {
if (
length($zz)>2) {
$aa=$zz=~m/\./;
 if (
$aa==1)  {@file[$xy]="$qqq/$zz";$xy++;} }
closedir dir;}
};
for 
$wer (@file){print "$wer\n"};# убери в начале решетку если хочешь чтобы выводились найденные 
# файлы 

######## функция выдирания из найденных фалов e-mail адресов

open mail,">new-mail.txt";

for 
$syka (@file){
open piska"<$syka";
while (
$zzaa=<piska>)
{if (
$zzaa =~m/\b([\w\d]+\@[\w\d]+\.[\w\d\.]+)\b/g) { $list{"$1"}="";}}}
 


$,=
"\n";
print 
mail keys %list;
close mail


C!klodoL 02.09.2007 02:19

мыло отделено от остального хтмл пробелами или <, если оно там еще чем то может быть отделено, то этот символ надо вставить в [ |>] через |
#!/usr/bin/perl

open (html, '<file.txt');
open (mila, '>mila.txt');
while (<html>) {
if ($_ =~ /[ |>](.+@.+.\w+)[ |<]/gi) {
print mila "$1\n";
}
}
close html;
close mila;

ant0ha 02.09.2007 10:02

тоже довольнотаки часто встречается:

&nbsp;mail@site.ru&nbsp;


Время: 08:03