ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #451  
Старый 19.05.2009, 19:57
Аватар для Велемир
Велемир
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме:
1469161

Репутация: 142


Отправить сообщение для Велемир с помощью ICQ
По умолчанию

Пиплы! Захотелось вот написать парсер ящиков от 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);

}





?>
Это далеко не готовый скрипт,а лишь наработка.Проблема состоит именно в том,какая регулярка нужна для выдирания Входящих писем.Там куча символов...пробовал,ничего не возвращает.Может,дабы не мучиться,скажете,есть ли такие программы в свободном обиходе?)(Парсинг определённых заголовков писем и его содержимым).
 
Ответить с цитированием

  #452  
Старый 20.05.2009, 08:23
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Эм-м, а ключевое слово "Входящие" и число напротив не подходят?
 
Ответить с цитированием

  #453  
Старый 20.05.2009, 18:14
Аватар для Велемир
Велемир
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме:
1469161

Репутация: 142


Отправить сообщение для Велемир с помощью ICQ
По умолчанию

Нет,не работает.Пробовал
 
Ответить с цитированием

  #454  
Старый 20.05.2009, 20:24
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Всего писем (адрес страницы сам знаешь, там где написано "Входящие"):

PHP код:
<?php
$in
='title="Входящие">Новых&nbsp;писем:&nbsp;<b>8</b></a>';
preg_match('|title="Входящие">Новых&nbsp;писем:&nbsp;<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]);
?>
 
Ответить с цитированием

  #455  
Старый 21.05.2009, 21:03
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

как регулярке указать промежуток от нуля до 255? чего-то я забыл

PHP код:
preg_match('|^[0-255]{1,3}$|',$_POST['ipPart3']) 
 
Ответить с цитированием

  #456  
Старый 21.05.2009, 21:27
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Ru}{eeZ Никак.

PHP код:
if (is_numeric($_POST['ipPart3']) && intval($_POST['ipPart3'])>&& intval($_POST['ipPart3'])<255
 
Ответить с цитированием

  #457  
Старый 22.05.2009, 19:59
Аватар для Велемир
Велемир
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме:
1469161

Репутация: 142


Отправить сообщение для Велемир с помощью ICQ
По умолчанию

Эээ,Паш,не знаю,где ты нашёл там это,но я этого не видел.Зато смог сам разобраться не без твоей помощи.:

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>&nbsp;(.*)|',$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..
 
Ответить с цитированием

  #458  
Старый 01.06.2009, 08:48
Аватар для iv.
iv.
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", если они уже в таком виде
спасибо

пс: питон
 
Ответить с цитированием

  #459  
Старый 01.06.2009, 09:12
Аватар для Gifts
Gifts
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..
 
Ответить с цитированием

  #460  
Старый 01.06.2009, 10:20
Аватар для iv.
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Цитата:
Непонятно в каком виде исходный текст, если в каждой строчке по адресу - то будет так
Не совсем осознал как работает (\w+\.\w+)[\s/<>"\'] ну ладно. Исходный текст на самом деле в хтмл и ссылка находится в теге <cite>. Ну и так я собственно получаю url до слэша:
Код:
<cite>([^/]*)</cite>
Нужно получить домен 2 уровня из этого дела.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]/[Pascal] Задай вопрос, получи ответ Isis С/С++, C#, Delphi, .NET, Asm 6762 17.06.2010 21:23
[ *NIX ] Задай вопрос - получи ответ. Xszz *nix 1547 15.06.2010 15:41
[Lan] Задай вопрос - получи ответ! sedoy_xxx АнтиАдмин 133 31.03.2010 08:35
Всё о беспороводном соединении на кпк и смартфонах! Задай вопрос - получи ответ! ARMENIN Беспроводные технологии/WPAN/WLAN 2 02.11.2008 00:40
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ