![]() |
Работа с html-кодом страницы, поиск и копирование нужных строк
Здравствуйте!
Пишу программку, которая заходит на сайт Одноклассники, загружает мой логин и пароль, а затем анализирует мой форум, нет ли там новых сообщений. 1. Подскажите, как получить html-код страницы после загрузки моего аккаунта? Не знаю, можно ли тут использовать _INetGetSourse(), ведь при каждой загрузке страницы моего пользователя адрес страницы меняется. 2. Я хочу найти в html-коде страницы текст между тегами <div id="hook_SmilizeContent_id" class="msg-area"> и </div></div> и записать его в переменную, как это лучше сделать? Что использовать StringregExpReplace или StringregExp - я с ними совсем запуталась. |
1. к примеру то же самое для вконтакте:
Код:
$sPage = _INetGetSource('www.vkontakte.ru/login.php?email=' & $sCfgEmail & '&pass=' & $sCfgPass) (т.е. _INetGetSource возможно всетаки как то использует Internet Explorer) Цитата:
Код:
'www.vkontakte.ru/login.php?email=' & $sCfgEmail & '&pass=' & $sCfgPass 2. вариант: Код:
#include <Array.au3 |
_INetGetSource можна было б использовать, но тут ведь нужно после запуска страницы еще на ссылку МОИ СООБЩЕНИЯ перейти... Вот я предлагаю такое решение, при котором в переменную заносится последнее сообщение:
Код:
#include <IE.au3> |
Цитата:
+ попробовать может через _IECreateEmbedded - еще лучше будет, если получится? |
Цитата:
ругается на строку: $sPage = _INetGetSource('www.vkontakte.ru/mail.php?out=0&st=1') пишет:"Unknown function name" Не знаю в чем дело, я пока в Autoit туповата. Может я где-то ошиблась? Код:
#include <IE.au3> |
Цитата:
Вот тут я что-то туплю: Цитата:
Потому, что если без изменений беру твой код, то выводит весь код страницы :cry: |
вариант от beve, тут самый правильный.
хз, как, но отловить php или какой другой cgi скрипт авторизация не знаю как )) а то было бы легкче :) Цитата:
1. классная полезная штука 2. и мой пробный вариант сообщения о новых сообщениях ) Цитата:
показал для разбора: по аналогии )) |
Может так? Хотя конечно, если бы можно было через _INetGetSource как то войти...было бы быстрее:
Код:
#include <IE.au3> Сам исправил... |
Цитата:
Мне нужен просто текст последнего сообщения - это текст между первыми найденными тегами <div id="hook_SmilizeContent_id" class="msg-area"> и </div>, который будет служить эталоном для сравнения. Например, <div id="hook_SmilizeContent_id" class="msg-area"></div> тут текст,который должен занестись в $sRezultat = <p>Привет! :-D</p> Вот это у меня и не получается. Твоя прога выводит: "Новых сообщений нету!" даже, если новое сообщение есть. Может как-то зациклить надо, чтоб проверка происходила периодически после изменения странички? Только я не знаю, как изменение на странице отследить. |
Цитата:
Дальше: после того как в переменную $sRezultat будет занесен текст сообщения, он будет с "мусором", которым может быль например ссылка на смайлик заключенный в <> поэтому я и остсеиваю такой мусор при помощи $sRezultat2=StringregExpReplace($sRezultat,"(?s)(<.*?>)", " "), и при этом тот текст который хранится в переменной $sRezultat будет проанализирован, и все нахождения любого текста, заключенного в <>, будут заменены просто на пробел. |
Спасибо большое за объяснения!
beve, а у тебя, когда ты запускал свой вариант, были сообщения в форуме? В смесле:программа реагирует на появление сообщения в пустом форуме? Может разница в начальных условиях запуска скрипта. Думаю, страницы на odnoklassniki.ru у всех одинаковые и твоя прога просто обязана работать и у меня. На момент запуска сообщения у меня в форуме уже есть - но увы, все равно пишет "Новых сообщений нету!" Иначе я просто не понимаю, почему,просматривая исходный код страницы, я вижу сообщение между этими тегами, а скрипт не может его найти :dont-know |
Я у себя пробовал когда было сообщение, То скрипт показал сообщение, потом я сообщение удалил, и после запуска скрипта, выскочило окошко что сообщений нету. Попробуй поставить в конце кода Msgbox(0,"",$sRezultat) и посмотреть, если будет код всей странички, и при этом сообщение есть...значит код выходит не совпадает. Еще одно, вот на этой страничке этого форума http://forum.oszone.net/thread-132437.html есть простенький код, который нужно скомпелировать в EXE, по етой проге я проверяю наглядно работу созданного Шаблона для поиска. Так вот, в поле текст, вставь код из твоей страници, только не весь ибо от там не поместится, а кусок, этак строк 10 выше нового сообщения и 10 ниже, а в поле Pattern вставь это (?s).*?hook_SmilizeContent_id.*?>(.*?)</DIV>.* Должен вернуться только кусок кода который тебе нужен, если вернется весь текст, поэксперементируй тут с регулярными выражениями...
|
Спасибо, попробую :yes:
|
Цитата:
Что я должна сделать, чтоб твой пример заработал? Интересно увидеть хотя бы Цитата:
|
Sestrichka, это для любитилий контакта (имхо, я нет :)).
ссылка номер 1: там переделанная миранда для контакта - эдакий icq для этого сайта. ссылка номер 2: там пробная прога на AutoIt для контакта, выполняет те же действия, что ты делаешь для одноклассников - проверяет сообщения. Для перехода по этим ссылкам - необходима регистрация на сайте контакта. |
Время: 02:21. |
Время: 02:21.
© OSzone.net 2001-