Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

28.09.2006, 20:17
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
парсер email
Привет всем. У меня тут такая задача. мне нужна написать парсер email на PHP. Вроде бы что сложного? Но я элементарно не могу придумать хотя бы нормальный алгоритм. У меня пока два незаконченных варианта.
1. Искать по тексту @ а затем идти до пробела или одинарной кавычки. Проблема в том как идти? Ведь нужно и слева и справа отследить знаки. Можно ли это сделать?
2. Регулярные выражения. Тут я вообще на стопоре сижу... Думаю искать по шаблону мыльник затем заносить в массив после всего писать в файл. Хотя тут тоже все очень размыто и к тому же я не умею еще с ними работать.
Если у кого то есть идеи по этому поводу, поделитесь пожалуйста. Заранее спасибо всем.
|
|
|

28.09.2006, 20:37
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
НУ на регулярнике может так?!:
PHP код:
"/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2.3}/i"
или
PHP код:
"/^[-0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,3}$/i"
Ну а вобщем надо будет смотреть страницы, которые будуи парситься...
Вот... хех, вроде работает.
PHP код:
<? for($i=1;$i<3000;$i++){ $filename = 'http://www.***.ru/center.php?chp=showorg&num='.$i; echo $i.". "; $str = file_get_contents($filename); preg_match_all('|href="mailto:([^"]*)"|is',$str,$out); if(empty($out[1][0])) echo " no mail"; else{ echo " get ".$out[1][0]; fwrite($handler,$out[1][0]."\n"); } echo "\n"; } fclose($handler); ?>
Скачивает страницу в переменную, разбирает её спомощью регулярного выражения и если мыло нашёл на странице, то пишет в файл.
Последний раз редактировалось Dr.Check; 28.09.2006 в 21:27..
|
|
|

28.09.2006, 21:57
|
|
Постоянный
Регистрация: 17.07.2005
Сообщений: 475
Провел на форуме: 1665310
Репутация:
488
|
|
Скажем так:
1.Считываем содержимое файла в массив
2. Разбиваем массив до space (чтобы каждое слово было отделено от другого)
3. Убираем лишние пробелы, кавычки и т.п.
4. Согласно шаблону находим адресс+дамп в массив.
5. Вывод
Как уже показал Dr.Check, иди на php.net и прочти про preg_match_all().
|
|
|

29.09.2006, 05:34
|
|
Познавший АНТИЧАТ
Регистрация: 25.08.2006
Сообщений: 1,524
Провел на форуме: 3405508
Репутация:
1745
|
|
Чел скачать мануал по Php. Выучи и потом сможешь написать такой скрипт!
|
|
|

29.09.2006, 16:36
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
Всем спасибо. Только все дело в том что мне нужен был парсер из БД или тхт файла. Пытался изменить скрипт от Dr.Check под себя но что то я совсем расслабился.  Буду дальше напрягать оставшиеся мозги. 
|
|
|

29.09.2006, 18:25
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
ну убираем цикл и меняем filename на имя текстового файла и всё собственно:
PHP код:
<? $filename = 'file.txt'; echo $i.". "; $str = file_get_contents($filename); preg_match_all('|href="mailto:([^"]*)"|is',$str,$out); if(empty($out[1][0])) echo " no mail"; else{ echo " get ".$out[1][0]; fwrite($handler,$out[1][0]."\n"); } echo "\n"; fclose($handler); ?>
Правда непонятно в каком виде там email ...
|
|
|

30.09.2006, 18:53
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
blaga
толька сразу добивайся универсальности парсинга,б делай уклон не толька на mailto: но и прост на \w+@\w+\.\w+ т.е. на поиск @ и . между и после где идут буквы и цифры и знаки подчеркивания и еще тирэ, далее некоторые пишут типа domain[zz]mail[ss]ru тут тожу делай регесп. Еще сделай что бы твой скрипт скакал по сайту сам и на лету добовлял результ парсинга уже либо в файл либл еще куда.
Sбор ссылок:
1. получаем результат в виде готовых ссылок;
1.1 конектимся по етим ссылкам в цикле foreach, однавременно текущий урл заносим в качестве ключа в ХЕШ а значение ставим в '1' (уже проканектились), так поступаем со всеми ссылками 1-го результата;
1.2 парсим контент от конекта этих ссылок (1.1), заносим их в ХЕШ в качестве ключа, а значение устонавливаем в '0' (не конектились), причем уже включаем проверку на наличия уже существующих ключей.
2.0 Далее мы конектимся уже во 2й раз по ключам, значение которых выставлено в '0', опять потом проверяем контент на наличия сыылок,парсим их , проверям на наличия уже в хеше, добовляем.
Последний раз редактировалось n4n0bit; 01.10.2006 в 20:49..
|
|
|

01.10.2006, 11:00
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
Кто нибудь видел бд например от phpBB? Там нету мейлто. Там только @ искать... Все равно всем спасибо...
|
|
|

01.10.2006, 11:44
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
А вот скажи, нафиг, писать парсер для БД, если можно использовать для этих нужд phpMyAdmin??? Видео нитрекса посмотри. Он как раз там этим занимался.
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Advanced Email Extractor
|
Елена Сафонова |
E-Mail |
1 |
04.07.2006 01:21 |
|
Парсер
|
-dp- |
Болталка |
3 |
08.06.2006 01:28 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|