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

19.05.2009, 19:57
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Пиплы! Захотелось вот написать парсер ящиков от mail.ru(возможно,и других,но пока хватает и этого)
Вроде всё норм,но когда вот дохожу до количества писем,обламываюсь регуляркой:
PHP код:
<?php
$i = 0;
$ch = curl_init();
$url = "http://xhtml.wap.mail.ru/cgi-bin/auth?rand=3512944353";
$url1 = "http://xhtml.wap.mail.ru/cgi-bin/msglist?folder=0";
$url2 = "http://xhtml.wap.mail.ru/cgi-bin/start";
$req = "Login=welya.icq&Domain=mail.ru&Password=ko4ka&page=&submit=Вход";
$ua = "IE 6.0";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$req);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
curl_close($ch);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match_all("|<a class=\"lnk_b\" href=\"(.*)\">(.*)</a><br />|",$res,$r)) {
foreach($r[2] as $v) {
if(strlen($v) == 213) {
$i++;
}
}
}
curl_close($ch);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url2);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match("|Тут_Шаблон_Для_Выдирания_Числа_Входящих_Писем|",$res,$t)) {
print_r($t);
}
?>
Это далеко не готовый скрипт,а лишь наработка.Проблема состоит именно в том,какая регулярка нужна для выдирания Входящих писем.Там куча символов...пробовал,ничего не возвращает.Может,дабы не мучиться,скажете,есть ли такие программы в свободном обиходе?)(Парсинг определённых заголовков писем и его содержимым).
|
|
|

20.05.2009, 08:23
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Эм-м, а ключевое слово "Входящие" и число напротив не подходят?
|
|
|

20.05.2009, 18:14
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Нет,не работает  .Пробовал
|
|
|

20.05.2009, 20:24
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Всего писем (адрес страницы сам знаешь, там где написано "Входящие"):
PHP код:
<?php
$in='title="Входящие">Новых писем: <b>8</b></a>';
preg_match('|title="Входящие">Новых писем: <b>(.*)</b></a>|Ui',$in,$res);
print_r ($res[1]);
?>
Заголовки писем (уже внутри "Входящие"):
PHP код:
<?php
$in='<td class=lettem><a href="readmsg?id=12409073890000010683">Автомобильные пробки в реальном времени на Картах@Mail.Ru </a></td>';
preg_match_all('|<td class=lettem><a href=".*">(.*)</a></td>|Ui',$in,$res);
print_r ($res[1]);
?>
|
|
|

21.05.2009, 21:03
|
|
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме: 956872
Репутация:
186
|
|
как регулярке указать промежуток от нуля до 255? чего-то я забыл
PHP код:
preg_match('|^[0-255]{1,3}$|',$_POST['ipPart3'])
|
|
|

21.05.2009, 21:27
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Ru}{eeZ Никак.
PHP код:
if (is_numeric($_POST['ipPart3']) && intval($_POST['ipPart3'])>0 && intval($_POST['ipPart3'])<255)
|
|
|

22.05.2009, 19:59
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Эээ,Паш,не знаю,где ты нашёл там это  ,но я этого не видел.Зато смог сам разобраться не без твоей помощи  .:
PHP код:
<?php
$i = 0;
$url = "http://xhtml.wap.mail.ru/cgi-bin/auth?rand=3512944353";
$page = 1;
$links = array();
$messages = array();
$url1 = "http://xhtml.wap.mail.ru/cgi-bin/msglist?folder=0";
$req = "Login=welya.icq&Domain=mail.ru&Password=ko4ka&page=&submit=Вход";
$ua = "IE 6.0";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_NOBODY,0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$req);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match_all('|<strong>[0-9]{1,10}</strong> (.*)|',$res,$m)) {
foreach($m[1] as $m1) {
echo "<center>Входящие: $m1 </center><br>";
break;
$x = $m1/5;
$x = round($x);
}
}
curl_close($ch);
/* ///////////////////////////////////////////// */
$theme = "Forum.Злой.org <password@zloy.org>";
while($page < $x) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
if(preg_match_all('|<a class="lnk_b" href="(.*)"><b>(.*)</b></a><br />|',$res,$m)) {
echo "<center>Ссылки на сообщения</center><br>";
foreach($m[1] as $d) {
echo "<center>$d</center>";
$links[] = $d;
}
echo "<br>";
echo "<center>Список тем:</center><br>";
foreach($m[2] as $d1) {
echo "<center>$d1</center>";
$messages[] = $d1;
}
}
curl_close($ch);
/* ///////////////////////////////////////////////////////////////// */
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://xhtml.wap.mail.ru/msglist?folder=0&page=$page");
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_COOKIEFILE,"./cookie");
curl_setopt($ch,CURLOPT_COOKIEJAR,"./cookie");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$res = curl_exec($ch);
curl_close($ch);
}
?>
Запара теперь с циклом прогона страниц.По идее,всё правильно.Сначала выводит ссылки на сообщения и сами темы,потом делает запрос на следующую страницу,потом всё сначала,а выходит,что он выводит только Входящие сообщения и отрубается.Ещё проблема состоит в том,как посчитать количество сообщений(Входящих),и одновременно убрать переменную из цикла...А то скрипт при переходе на каждую страницу будет пытаться считать количество входящих сообщений заного,что не есть хорошо.У кого какие идеи ?
ЗЫ: Для тестов я брал другое мыло.
Последний раз редактировалось Велемир; 22.05.2009 в 20:38..
|
|
|

01.06.2009, 08:48
|
|
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме: 7134052
Репутация:
1204
|
|
подскажите регулярку для выделения домена из ссылок.
т.е. дано:
domain.com
www.domain.com
qwe.domain.com
qwe.rty.domain.com
...
qwe.rty.domain.com/index.html
...
надо чтобы по всем этим строкам выдавалось domain.com
дальше этого не думается:
эта регулярка берет всё пока не встречает символ "/"
надо ещё избавится от поддоменов и оставить строки типа "domain.com", если они уже в таком виде
спасибо
пс: питон
|
|
|

01.06.2009, 09:12
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
iv. Непонятно в каком виде исходный текст, если в каждой строчке по адресу - то будет так
Код:
import re
dom = 'domain.com\r\nwww.domain.com\r\nqwe.domain.com\r\nqwe.rty.domain.com\r\nqwe.rty.domain.com/index.html'
out = re.findall(r'(\w+\.\w+)[\s/<>"\']',dom)
print set(out)
Последний раз редактировалось Gifts; 01.06.2009 в 09:17..
|
|
|

01.06.2009, 10:20
|
|
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме: 7134052
Репутация:
1204
|
|
Непонятно в каком виде исходный текст, если в каждой строчке по адресу - то будет так
Не совсем осознал как работает (\w+\.\w+)[\s/<>"\'] ну ладно. Исходный текст на самом деле в хтмл и ссылка находится в теге <cite>. Ну и так я собственно получаю url до слэша:
Код:
<cite>([^/]*)</cite>
Нужно получить домен 2 уровня из этого дела.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|