Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с web страницами в делфи, подскажите варианты 
:(
    Опции темы
h2o
Дата 11.2.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: нет
Всего: 1



Добрый вечер!

Добрые люди, подскажите в проблеме:
делаем с ребятами сайт и прогу для сайта. Сайт с тестами и д.р. такой фигней.

сайт на php. Мне нужно с помощью ie движка 
1. зайти на страницу
2. считать данные
3. залогиниться на ней
4. отправлять туда данные
5. нажимать кнопки
6. обновлять в программе постоянно меняющиеся данные. (некоторые данные, например вопросы,время, меняются, ну примерно как отсчёт идет. и этот отсчёт нужно своевременно быстро отображать, иначе время ответа закончится и вопрос будет считаться не отвеченным.)

Я вообще не представляю как и что тут делать.. с чего начать, что спользовать и т.д. подскажите варианты

и плз... если есть  примеры, буду ОООООООчень благодарен!!!
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
h2o
Дата 15.2.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: нет
Всего: 1



мда.. нет ответов...

неужели никто подсказать не может?

сайт на php. Мне нужно с помощью ie движка 
1. зайти на страницу. ну это просто
2. считать данные. Тут только парсинг? или ещё варианты?
3. залогиниться на ней. это я почти сделал... вхожу, нахожу поля, заполняю.. но вот на кнопку не нажимается.. потому что там не кнопка и изображение и вообще без ссылки...
4. отправлять туда данные. результаты теста я думаю можно отправлять пост запросами.. благо с отправкой данных пост запросом я разобрался какоето время назадю
5. нажимать кнопки. жать на кнопки  нужно. тут блин я думаю разрешится когда авторизацию если дделаю.
6. обновлять в программе постоянно меняющиеся данные. вот тут вообще хз. даже идей нет! это например таймер с временем. есть проги-downloaderы с сайтов типа rapidshare depositfiles и т.д. которые сами линки редиректят и время(таймер отсчета) отображают... вообще я не понимаю как такое сделать!

ХЕЛП!!!

Это сообщение отредактировал(а) h2o - 15.2.2009, 14:33
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
MetalFan
Дата 15.2.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



2. что значит "считать"? найти на странице определенные данные? ну либо регулярки либо HTMLDOM, либо и то и то.
3. Обращайся к картинке, как к IHTMLElement у которого есть метод click.
4. а почему не использовать для отправки IE(IWebBrowser?), раз уж он уже используется
6. найти изменяющийся элемент. поковырять события IHTMLxxx, наверняка какое-нибудь событие дергается в момент обновления элемента.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
h2o
Дата 15.2.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: нет
Всего: 1



MetalFan  спасибо что откликнулся!

2. что значит "считать"? найти на странице определенные данные? ну либо регулярки либо HTMLDOM, либо и то и то.
HTMLDOM - это что и где? у меня Д2009. да данные нужно найти на странице и загрузить в прогу. причём данные наверняка не будут отмечены особыми тегами. 

3. Обращайся к картинке, как к IHTMLElement у которого есть метод click.
Код

<a title="Войти"><input tabindex=3 type="image" width="22" height="22" src="/images/login.png"></a>
            <input type="hidden" name="action" value="login">

и вот не получается нажать сюжа.

4. а почему не использовать для отправки IE(IWebBrowser?), раз уж он уже используется
хм. почему то я об этом не подумал. хотя это +

6. найти изменяющийся элемент. поковырять события IHTMLxxx, наверняка какое-нибудь событие дергается в момент обновления элемента.
Наверно это самое трудное. в серверной части у преподавателей будет типа мини-серверный мониторинг. он в реальном времени будет отображать результаты, кто сдал, кто не сдал, кто на каком вопросе, у кого какое время прошло/осталось и многое другое. тоесть для них страница этабудет динамическая, т.е. данные будут изменяться постоянно. если для пользователей будет только таймер в реальном времении, то для преподов будет куча динамических данных. А как их отследить? ну допустим... даже пример сайта не могу привести... ну например.. форекс чтоли.. там ежесекундно меняются данные, графики, и если страница открыта то  они автоматом обновляются. а как это происходит? как это делается? куки обновляются раз в милисекунду или как?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
MetalFan
Дата 15.2.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



2. я имел ввиду работу MS HTML. т.е. IWebBrowser2.Document и вперед по структуре. почитать можно MSDN либо поковырять этот форум)
3. а как пытался "нажать"? 
6. опять же надо изучать кишки MSHTML. скорее всего вполне возможно отследить изменения (обновления) элементов.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
h2o
Дата 15.2.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: нет
Всего: 1



нажать пытался 2мя способами.. 1й-это выполнение скрипта логина.. сайт же на рнр.. и 2й способ - не помню.. кажется был idHttp, оба варианта были выведены из примеров представленных тут на форуме..
IHTMLElement - это я не смотрел...
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
h2o
Дата 16.2.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: нет
Всего: 1



всё равно никак не получатся нажать на кнопку.

Код

<a title="Войти"><input tabindex=3 type="image" width="22" height="22" src="/images/login.png"></a><input type="hidden" name="action" value="login">

и
Код

<a title="Выйти"><input tabindex=3 type="image" width="22" height="22" src="/images/logout.png"></a><input type="hidden" name="action" value="logout">


вот такой код: нажимает на кнопки, но не работает в данном случае. он находит поля логина, пароля, по INPUT тэгу, а <input tabindex=3 type="image" width="22" height="22" src="/images/login.png"> не находит даже.
Код

  ovElements := WebBrowser1.OleObject.Document.forms.item(1).elements;
  for i := 0 to (ovElements.Length - 1) do
  begin
  if (ovElements.item(i).tagName = 'INPUT') and
     (ovElements.item(i).type = 'image')
    then
      ovElements.item(i).Click;
  end;


код который кликает по картинке, эту- <input tabindex=3 type="image" width="22" height="22" src="/images/login.png"> - не воспринимает и не находит как картинку.

есть ли ещё варианты как нажать на кнопку эту через WebBrowser?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
HiVeR
Дата 16.2.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 30.6.2008

Репутация: нет
Всего: нет



h2o, почему бы не использовать запросы по http протоколу?!
насколько знаю, весь процесс общения браузера с сервером идёт через запросы, а нажатие кнопок - несколько мнимое действо - после нажатия тоже отправляется запрос. 
IDHttp - самое простое, что могу посоветовать. Почти уверен, что через него можно всё это организовать. Через браузер тут будет геморно, имхо. 
Цитата

1. зайти на страницу
2. считать данные

Код

var s:string;
begin
s:=IDHTTP.Get(<Url сайта>);
end;

Цитата

3. залогиниться на ней
4. отправлять туда данные
5. нажимать кнопки

скорее всего эти шаги элементарно делаются через Post запросы.
Цитата

6. обновлять в программе постоянно меняющиеся данные. (некоторые данные, например вопросы,время, меняются, ну примерно как отсчёт идет. и этот отсчёт нужно своевременно быстро отображать, иначе время ответа закончится и вопрос будет считаться не отвеченным.)

тем же самым IDHTTP можно постоянно(по таймеру) скачивать страницу, а лучше как сказал MetalFan скачивать отдельные меняющиеся элементы и постоянно вставлять их в программу - тода думаю всё буйт быстро и четкоsmile.

Это сообщение отредактировал(а) HiVeR - 16.2.2009, 19:19
PM MAIL   Вверх
MetalFan
Дата 16.2.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



h2o, а такой код вообще скомпилился???


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
h2o
Дата 16.2.2009, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: нет
Всего: 1



HiVeR я сначала тоже смотрел в сторону IDHTTP. но я не могу понять как мне эти запросы организовать + ещё есть сложности. webBrowser половину делает автоматом. поэтому чтобы было более совместимо и не было гемора остановился на нем.

MetalFan  конечно компилируется. тут кусок я привел просто. вот полный код
Код

procedure TForm1.Button1Click(Sender: TObject);
var
ovElements: OleVariant;
i: Integer;
begin
WebBrowser1.navigate('www.ru');
ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
for i := 0 to (ovElements.Length - 1) do
if (ovElements.item(i).tagName = 'INPUT') and
(ovElements.item(i).type = 'SUBMIT') and
(ovElements.item(i).Value = 'войти') then
ovElements.item(i).Click;
end;

--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.