Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.08.2010, 17:02
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию с чего начать, работа с html страницей

хочу написать программу, которая считывает число со статичной страницы
локальный сервер, страница со статистикой соединений) и если число соединений превышает допустим 200, то нажимает кнопку

подскажите какие компоненты использовать, как искать число на странице? там текст такой есть на страничке в таблице"количество соединений xxx"
Ответить с цитированием
  #2  
Старый 07.08.2010, 18:54
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

1. Стягиваем страницу через IdHTTP.Get
2. Парсим с помощью pos, copy
3. Находим число
4. "Нажимаем на кнопку" - или делаем нужный запрос через idHTTP, если "кнопка" - объект на HTML-странице, либо ButtonN.Click, если кнопка на форме.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 08.08.2010, 07:07
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

после лазания по форуму
нашел примерно похожее
пытаюсь переделать под себя
пока вот так, по идее должна вывести в лейбл данные после надписи текст(условно)
повесил на кнопку срабатывание таймера
но выводит 10 символов с начала документа

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdCookieManager, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    Label1: TLabel;
    Timer1: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   http:TidHttp;
  CooM:TidCookieManager;
  data:TStringList;
  page1, name1:String;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  data :=TStringList.Create;
  http:=TIdHTTP.Create(Self);
  http.AllowCookies:=true;
  CooM:=TidCookieManager.Create(http);
  http.CookieManager:=CooM;
  http.HandleRedirects:=true;

end;
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  data.Free;
  Coom.Free;
  http.Free;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
     name1:='';

  page1 := http.Get('http://yandex.ru');
//  page1 := Utf8ToAnsi(page1); // это для перевода из utf-8 в windows-1251

  // ищим нужную позицию в тексте,   name1:=copy(page1,Pos('текст">',page1)+length('текст">'),10);
  Label1.Caption := name1;
//  Form1.Caption := name1;
end;

end.

Последний раз редактировалось harbor, 08.08.2010 в 07:28.
Ответить с цитированием
  #4  
Старый 08.08.2010, 07:32
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

а нет, все заработало, исправил косячки
попробую дальше копать
надо вытащить данные между > и <

Последний раз редактировалось harbor, 08.08.2010 в 07:42.
Ответить с цитированием
  #5  
Старый 08.08.2010, 17:14
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

не получается получить число 121 из html

Код:
Обслуживается соединений
				</td><td class="db" align="center">121</td></tr><tr><td class="db" width="30%">

таким кодом

Код:
page1:=idhttp1.get('http://127.0.0.1:8080/statpage.html');

  page1 := Utf8ToAnsi(page1);
  i:=ansipos('соединений', page1);


  delete(page1, 1, i);
  i:=ansipos('align', page1);
  delete(page1, 1, i);
  i:=ansipos('>', page1);
  delete(page1, 1, i);
  i:=ansipos('<', page1);
  s1:=copy(page1, 1, i-1);

  Label1.Caption := '('+s1+')';

страница в utf-8
то есть в заголовке стоит encoding="utf-8"
не понимаю почему не работает

проверял на других страничках в инете, все нормально
берет все что между тегами
а тут ничего не выдергивает вообще
Ответить с цитированием
  #6  
Старый 08.08.2010, 18:13
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Версия Делфи?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #7  
Старый 08.08.2010, 19:15
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

Delphi 7
другой нет под рукой
похоже что не получается у idhttp1.get открыть страничку
с данным адресом http://127.0.0.1:8080/statpage.html
сделал чтобы показывал в мемо что скачалось
одна строчка всего
какая-то ошибка скорее всего, но не могу прочитать, кодировка какая-то неясная
Ответить с цитированием
  #8  
Старый 08.08.2010, 19:20
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

может надо порт задать както
Ответить с цитированием
  #9  
Старый 08.08.2010, 19:49
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

а все, заработало
в свойствах idhttp1 ставил настройки прокси и забыл
только в utf-8 не переводит в анси
вместо букв вопросики
Ответить с цитированием
  #10  
Старый 08.08.2010, 21:13
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

почитал про кодировки, муторно
сделал аналих по тегам, работает
ну, осталось нажимать кнопку
Ответить с цитированием
  #11  
Старый 09.08.2010, 06:48
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

и опять не получается
кнопка у меня по методу GET работает
и длина ссылки получается больше 255 символов
выдается ошибка что string только до 255 символов
ставил Ansistring тоже самое
как победить?

все, победил

Последний раз редактировалось harbor, 09.08.2010 в 15:53.
Ответить с цитированием
  #12  
Старый 13.08.2010, 12:37
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

подскажите еще
как проще всего из memo получить url
то есть в memo допустим у меня в него забиваются 4 строки
и их надо вставить все в url в одну строку но с символами переноса %0D%
Ответить с цитированием
  #13  
Старый 13.08.2010, 12:54
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Memo1.Lines.Text
google://StringReplace
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #14  
Старый 13.08.2010, 13:36
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

то есть мне надо найти символ переноса строки чтоли и заменить его
а если я буду делать составную строку из строк memo
допустим url:=url+Memo1.Lines1[i]
то в url попадут символы переноса или нет?
Ответить с цитированием
  #15  
Старый 13.08.2010, 13:40
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

суть в том, что у меня в форме в мемо забивается ключ и его надо отправить методом Get
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter