| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > работа с web страницами в делфи |
| Автор: h2o 11.2.2009, 21:43 |
| Добрый вечер! Добрые люди, подскажите в проблеме: делаем с ребятами сайт и прогу для сайта. Сайт с тестами и д.р. такой фигней. сайт на php. Мне нужно с помощью ie движка 1. зайти на страницу 2. считать данные 3. залогиниться на ней 4. отправлять туда данные 5. нажимать кнопки 6. обновлять в программе постоянно меняющиеся данные. (некоторые данные, например вопросы,время, меняются, ну примерно как отсчёт идет. и этот отсчёт нужно своевременно быстро отображать, иначе время ответа закончится и вопрос будет считаться не отвеченным.) Я вообще не представляю как и что тут делать.. с чего начать, что спользовать и т.д. подскажите варианты и плз... если есть примеры, буду ОООООООчень благодарен!!! |
| Автор: h2o 15.2.2009, 14:29 |
| мда.. нет ответов... неужели никто подсказать не может? сайт на php. Мне нужно с помощью ie движка 1. зайти на страницу. ну это просто 2. считать данные. Тут только парсинг? или ещё варианты? 3. залогиниться на ней. это я почти сделал... вхожу, нахожу поля, заполняю.. но вот на кнопку не нажимается.. потому что там не кнопка и изображение и вообще без ссылки... 4. отправлять туда данные. результаты теста я думаю можно отправлять пост запросами.. благо с отправкой данных пост запросом я разобрался какоето время назадю 5. нажимать кнопки. жать на кнопки нужно. тут блин я думаю разрешится когда авторизацию если дделаю. 6. обновлять в программе постоянно меняющиеся данные. вот тут вообще хз. даже идей нет! это например таймер с временем. есть проги-downloaderы с сайтов типа rapidshare depositfiles и т.д. которые сами линки редиректят и время(таймер отсчета) отображают... вообще я не понимаю как такое сделать! ХЕЛП!!! |
| Автор: MetalFan 15.2.2009, 15:52 |
| 2. что значит "считать"? найти на странице определенные данные? ну либо регулярки либо HTMLDOM, либо и то и то. 3. Обращайся к картинке, как к IHTMLElement у которого есть метод click. 4. а почему не использовать для отправки IE(IWebBrowser?), раз уж он уже используется 6. найти изменяющийся элемент. поковырять события IHTMLxxx, наверняка какое-нибудь событие дергается в момент обновления элемента. |
| Автор: h2o 15.2.2009, 21:57 | ||
| MetalFan спасибо что откликнулся! 2. что значит "считать"? найти на странице определенные данные? ну либо регулярки либо HTMLDOM, либо и то и то. HTMLDOM - это что и где? у меня Д2009. да данные нужно найти на странице и загрузить в прогу. причём данные наверняка не будут отмечены особыми тегами. 3. Обращайся к картинке, как к IHTMLElement у которого есть метод click.
и вот не получается нажать сюжа. 4. а почему не использовать для отправки IE(IWebBrowser?), раз уж он уже используется хм. почему то я об этом не подумал. хотя это + 6. найти изменяющийся элемент. поковырять события IHTMLxxx, наверняка какое-нибудь событие дергается в момент обновления элемента. Наверно это самое трудное. в серверной части у преподавателей будет типа мини-серверный мониторинг. он в реальном времени будет отображать результаты, кто сдал, кто не сдал, кто на каком вопросе, у кого какое время прошло/осталось и многое другое. тоесть для них страница этабудет динамическая, т.е. данные будут изменяться постоянно. если для пользователей будет только таймер в реальном времении, то для преподов будет куча динамических данных. А как их отследить? ну допустим... даже пример сайта не могу привести... ну например.. форекс чтоли.. там ежесекундно меняются данные, графики, и если страница открыта то они автоматом обновляются. а как это происходит? как это делается? куки обновляются раз в милисекунду или как? |
| Автор: MetalFan 15.2.2009, 22:28 |
| 2. я имел ввиду работу MS HTML. т.е. IWebBrowser2.Document и вперед по структуре. почитать можно MSDN либо поковырять этот форум) 3. а как пытался "нажать"? 6. опять же надо изучать кишки MSHTML. скорее всего вполне возможно отследить изменения (обновления) элементов. |
| Автор: h2o 15.2.2009, 22:46 |
| нажать пытался 2мя способами.. 1й-это выполнение скрипта логина.. сайт же на рнр.. и 2й способ - не помню.. кажется был idHttp, оба варианта были выведены из примеров представленных тут на форуме.. IHTMLElement - это я не смотрел... |
| Автор: h2o 16.2.2009, 14:02 | ||||||
всё равно никак не получатся нажать на кнопку.
и
вот такой код: нажимает на кнопки, но не работает в данном случае. он находит поля логина, пароля, по INPUT тэгу, а <input tabindex=3 type="image" width="22" height="22" src="/images/login.png"> не находит даже.
код который кликает по картинке, эту- <input tabindex=3 type="image" width="22" height="22" src="/images/login.png"> - не воспринимает и не находит как картинку. есть ли ещё варианты как нажать на кнопку эту через WebBrowser? |
| Автор: HiVeR 16.2.2009, 19:14 | ||||||||
| h2o, почему бы не использовать запросы по http протоколу?! насколько знаю, весь процесс общения браузера с сервером идёт через запросы, а нажатие кнопок - несколько мнимое действо - после нажатия тоже отправляется запрос. IDHttp - самое простое, что могу посоветовать. Почти уверен, что через него можно всё это организовать. Через браузер тут будет геморно, имхо.
скорее всего эти шаги элементарно делаются через Post запросы.
тем же самым IDHTTP можно постоянно(по таймеру) скачивать страницу, а лучше как сказал MetalFan скачивать отдельные меняющиеся элементы и постоянно вставлять их в программу - тода думаю всё буйт быстро и четко |
| Автор: MetalFan 16.2.2009, 19:45 |
| h2o, а такой код вообще скомпилился??? |
| Автор: h2o 16.2.2009, 23:27 | ||
| HiVeR я сначала тоже смотрел в сторону IDHTTP. но я не могу понять как мне эти запросы организовать + ещё есть сложности. webBrowser половину делает автоматом. поэтому чтобы было более совместимо и не было гемора остановился на нем. MetalFan конечно компилируется. тут кусок я привел просто. вот полный код
|