Из большого HTML кода нужно выдернуть все E-mail адреса

Евгений Иванов
На сайте с 26.07.2006
Offline
272
2154

Около трёх месяцев активного обмена ссылками по почте от Yandex - собирал все письма в папку - обмен. Обмениваться закончил, и хотел бы собрать ВСЕ e-mail адреса с кем обменялся ссылками, т.к обменивался только по строй теме, и откладывал только удачные обмены, скопилась не плохая база e-mail адресов. Теперь хотел бы вытащить все e-mail адреса не затратив неделю на тупое копирование..

Если у кого есть скрипт (писать самому очень проблематично сейчас будет) – дайте пожалуйста.

Есть txt файл, в нём весь html скопированный прямо со страницы yandex почты, весит около полу метра, могу сократить раза в 3 если надо будет, убрать часто повторяющееся html теги, ну и нужно из этого файла получить список адресов.

САМОЕ СОВЕРШЕННОЕ БУДЕТ ЕСЛИ СКРИПТ СМОЖЕТ ВЫРВАТЬ НЕ ТОЛЬКО E-mail адреса.

Пример кода “

<a href="/classic/message?ids=9150000000224550653&amp;current_folder=27450000000001779362" onmouseup="event.cancelBubble=true" title="nashdom2000@mail.ru">Леонид Иванов</i>

Вот было бы не плохо если бы он вырвал и адреса и имена отправителя, тогда для базы будет в обще персик :)

Но в принципе буду оч.благодарен и за скрипт который просто вырвет адреса почты

Wap.Click / Вап.Клик / Я - рядом!
lnx
На сайте с 26.07.2008
Offline
128
lnx
#1

Смысла в вашем случае писать отдельный скрипт нет.

Возьмите любой редактор regex-выражений, загоните в него ваш файл, примените регулярку для выбора мыла, коих в инете найти можно бесчисленное количество по запросу "email regex"

потратив минут 10 - получите список адресов

lnx добавил 04.11.2008 в 13:00

дополнено

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

title="([^"]+?)">([^>]+)</i>
jpg 1.jpg
S
На сайте с 27.08.2008
Offline
211
#2

Вот, пожалуйста, яваскрипт.

Делаете веб-страницу на локальном компе, вставляете в нее скрипт.

В верхнее поле копипастите свой файл - в нижнем поле собираются все адреса.


<!-- STEP ONE: Paste this code into the HEAD of your HTML document -->

<HEAD>

<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
function findEmailAddresses(StrObj) {
var separateEmailsBy = ", ";
var email = "<none>"; // if no match, use this
var emailsArray = StrObj.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
if (emailsArray) {
email = "";
for (var i = 0; i < emailsArray.length; i++) {
if (i != 0) email += separateEmailsBy;
email += emailsArray;
}
}
return email;
}
// End -->
</script>
</HEAD>

<!-- STEP TWO: Copy this code into the BODY of your HTML document -->

<BODY>

<center>
<form>
<textarea name=comments rows=10 cols=50 onBlur="this.form.email.value=findEmailAddresses(this.value);"></textarea>
<br>
Email: <input type=text name=email>
</form>
</center>

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#3

или на php

<?

$html = file_get_contents('<ваш файл>');
preg_match_all('|title="([^"]+?)">([^>]+)<\/i>|Uis', $html, $out, PREG_PATTERN_ORDER);
foreach ($out[0] as $value)
echo $out[1][0],' - ', $out[2][0], '<br>'; // имя - мыло
?>
Евгений Иванов
На сайте с 26.07.2006
Offline
272
#4

Большое спасибо, извлёк адреса.

Ещё раз спасибо ;)

[Удален]
#5

На линуксе, проще простого, самый быстрый способ - file.html grep команду из консоли используйте. Если тема актуальна, пишите в личку, помогу.

ЗЫ Не актуально :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий